2014-06-30 36 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(); 
相关问题