首頁 >後端開發 >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