将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;
};
和TEA setkey()
void setkey(std::string KEY,
unsigned int ROUNDS = 64,
uint32_t DELTA = 0x9e3779b9, uint32_t TOTAL = 0xc6ef3720)
在其它类的功能的所有都是相同的。加密/解密只有std::string DATA
作为它们的参数。 void setkey
有std::string KEY
和其他可选参数。但是,像RC6这样的功能,其setkey
也有其他可选参数不会出错。
任何原因为什么?
此外,所有类别的声明旁边都有: public CryptoAlgorithm
。
'encrypt'只有一个参数。还有,如果RC6.setkey()'有多个可选参数,它是如何通过的呢? – calccrypto 2011-06-16 16:57:58
@cal:我只能告诉你,在实现的类的定义下,尽管我打赌它的原因有些类有'setkey'的多个版本,其中一个编译器可以匹配纯虚拟函数,或编译器停止在相同的错误的倍数 – Necrolis 2011-06-16 17:12:12
没有。每个类只有一个'setkey()' – calccrypto 2011-06-16 20:59:55