2014-06-30 80 views
0

我在嘗試瞭解如何實現this constructor時遇到此錯誤。使用無文檔庫函數的「表達式必須具有類類型」

我剝召喚出來的功能我也有它在,並達到我的問題的一個相當小的示範:

uint32_t p=0, c; 
uint8_t k=0x00; 
c = p.AES::AES(AES_128, k); 

我期待明文p通過AES與關鍵k進行加密,以密文c

相反,我得到錯誤Expression must have class type,由於我沒有經驗的OOP毫無疑問。

不幸的是,圖書館根本沒有很好的記錄,所以我甚至無法通過示例來學習(沒有SO的幫助!) - 我在這裏做了什麼錯誤?

回答

5

您有多個問題:一是你使用p爲對象,但它是一個原始類型的變量。其次,您嘗試將構造函數作爲靜態方法調用。

你應該做

AES c(AES::AES_128, k); 

聲明cAES類型的變量,你可以使用成員函數的類象

c.encryptBlock(someArray, someOtherArray); 

在我看來,你需要學習一些基本的(我的意思是真的是 basic)C++。我建議你退房The Definitive C++ Book Guide and List

+0

謝謝 - 你肯定是對的最後一點。我有Savitch,但還沒有閱讀(或使用C++)OOP的章節。 – OJFord

1

您需要範圍的枚舉

AES crypt = AES(AES_TYPE::AES_128, k); 

而且加密/解密,你需要分別使用下列功能。

void AES::encryptBlock(uint8_t *out, uint8_t *in); 
void AES::decryptBlock(uint8_t *out, uint8_t *in); 

所以,你會調用它從你的crypt對象,例如

crypt.encryptBlock(); 
相關問題