复制代码后类作为函数 C++ 的参数 https://stackoverflow.com/questions/6240944/classes-as-parameter-of-function-c进入我的代码,我收到错误:note: because the following virtual functions are pure within 'TEA':
和 XTEA,但只有这两个功能。其他功能,AES、BLOWFISH、CAMELLIA、RC4、RC5、RC6 等都可以使用。只是这两个函数出错了。我不明白为什么。
链接中的代码(稍作修改):
class CryptoAlgorithm
{
public:
virtual std::string encrypt(std::string DATA) = 0;
virtual std::string decrypt(std::string DATA) = 0;
virtual void setkey(std::string KEY) = 0;
};
and TEA setkey()
void setkey(std::string KEY,
unsigned int ROUNDS = 64,
uint32_t DELTA = 0x9e3779b9, uint32_t TOTAL = 0xc6ef3720)
其他类中的所有功能都是相同的。加密/解密只有std::string DATA
作为他们的论点。void setkey
has std::string KEY
和其他可选参数。然而,像RC6这样的功能,其setkey
还有其他可选参数不会出错。
有什么理由吗?
另外,所有班级都有: public CryptoAlgorithm
在他们的声明旁边。
虚函数实现的定义必须与抽象类定义中的纯虚函数具有相同的原型,否则编译器将它们视为不同的函数(它们成为重载),您还需要为该类实现每个纯虚函数而不是是抽象的(当然它也不能定义自己的纯虚函数)。修复它的选项是让你的实现类实现setKey
仅与one字符串参数(以匹配虚拟原型),然后为重载提供一个单独的函数(但这可能会导致默认参数的调用不明确)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)