首页 >后端开发 >C++ >为什么会出现'类'Blowfish”不存在默认构造函数”的情况以及如何修复?

为什么会出现'类'Blowfish”不存在默认构造函数”的情况以及如何修复?

Barbara Streisand
Barbara Streisand原创
2024-11-28 16:22:121050浏览

Why Does

对象初始化中的默认构造函数错误

将加密功能封装在 Blowfish 类中,在尝试创建 GameCryptography 实例时遇到错误。错误消息“类‘Blowfish’不存在默认构造函数”表示缺少默认构造函数。

当类缺少构造函数时,编译器通常会生成一个不带参数的默认构造函数。但是,如果定义了非默认构造函数(如本例所示),编译器将不会生成此默认构造函数。

解决方案

要解决该错误,您可以为 Blowfish 定义默认构造函数或修改对象初始化。

1.添加默认构造函数:

向 Blowfish 类添加默认构造函数,如:

Blowfish() {}

此构造函数将初始化对象,而不指定算法。

2。在对象初始化中指定算法:

在 GameCryptography 中创建 Blowfish 实例时,显式指定算法。例如:

GameCryptography::GameCryptography(unsigned char key[])
{
    _blowfish = Blowfish(CBC);
}

3。使用 C 11 默认成员初始化:

在 C 11 或更高版本中,您可以使用默认成员初始化来自动将成员初始化为其默认值。这允许您定义非默认构造函数,但仍然具有“类似默认”的构造函数:

Blowfish(BlowfishAlgorithm algorithm = CBC);

GameCryptography::GameCryptography(unsigned char key[]) : _blowfish() {}  // Default-initialize _blowfish

术语说明

操作模式 (例如,ECB、CBC、CFB)本身并不是加密算法。将它们引用为算法可能会导致混乱。

以上是为什么会出现'类'Blowfish”不存在默认构造函数”的情况以及如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn