我有两个文件:main.cpp
和crypto.h
,其中包含模板类Crypto。在类构造函数中,我需要传递一个函数指针并将其分配给(*keyGen)方法。我需要传递的函数有一个可选参数。
template <class keyType>
class Crypto {
private:
keyType (*keyGen)(keyType);
public:
Crypto(keyType (*keyGen)(keyType)) {
this->keyGen = keyGen;
}
void decode() {
keyType foundKey;
vector<string> output;
keyType curKey = keyGen(); // Here keyGen has no args
// if curKey does not decode the input
curKey = keyGen(curKey); // Here keyGen has 1 arg of type keyType
// else foundKey = curKey;
// Save the decoded file
}
};
在 main.cpp 中
int keyGen(int key = -1) { // This is the optional param
key++;
return key;
}
int main() {
// ...
Crypto<int> crypto(keyGen);
crypto.decode();
}
我需要对解码方法进行修改,使其能够在不传递keyType参数和传递keyType参数两种情况下都能调用keyGen方法。如果使用没有参数的keyGen方法,则返回0;否则返回key+1。 我尝试过对keyGen函数进行重载,但由于它是一个函数指针,所以这是不可能的。我进行了大量研究,但并未找到解决方案。