將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