“表达式必须具有类型”,使用未记录的库函数

时间:2014-06-30 23:25:23

标签: c++ oop

我在尝试了解如何实施this constructor时遇到此错误。

我将调用取消了我所使用的功能,并且对我的问题进行了极少的演示:

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

我希望明文p由AES加密,密钥k加密为密文c

相反,由于我对OOP缺乏经验,我得到了错误Expression must have class type

不幸的是,图书馆根本没有完整的文档记录,所以我甚至无法通过示例学习(没有SO的帮助!) - 我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

您有多个问题:首先您使用p作为对象,但它是基本类型的变量。其次,您尝试将构造函数称为静态方法。

你应该这样做。

AES c(AES::AES_128, k);

c声明为AES类型的变量,您可以使用类中的成员函数,如

c.encryptBlock(someArray, someOtherArray);

在我看来,你需要学习一些基本的(我的意思是真正的基础)C ++。我建议您查看The Definitive C++ Book Guide and List

答案 1 :(得分: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();