gpt4 book ai didi

c++ - 错误是因为函数在类中是纯虚拟的?

转载 作者:太空狗 更新时间:2023-10-29 20:00:32 25 4
gpt4 key购买 nike

Classes as parameter of function c++复制代码后在我的代码中,我收到错误:注意:因为以下虚函数在“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;
};

和 TEA setkey()

void setkey(std::string KEY, 
unsigned int ROUNDS = 64,
uint32_t DELTA = 0x9e3779b9, uint32_t TOTAL = 0xc6ef3720)

其他类中的所有函数都是相同的。加密/解密只有 std::string DATA 作为参数。 void setkeystd::string KEY 和其他可选参数。但是,像 RC6 这样的 setkey 也有其他可选参数的函数不会出错。

有什么原因吗?

此外,所有类的声明旁边都有 : public CryptoAlgorithm

最佳答案

虚函数实现的定义必须与抽象类定义中的纯虚函数具有相同的原型(prototype),否则编译器将它们视为不同的函数(它们成为重载),您还需要实现每个纯虚函数该类不是抽象的(当然它也不能定义自己的纯虚函数)。修复它的选项是让你的实现类实现 setKey 只有 一个 字符串参数(以匹配虚拟原型(prototype)),然后有一个单独的重载函数(this但是可能会导致来自默认参数的模棱两可的调用)。

关于c++ - 错误是因为函数在类中是纯虚拟的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com