物件初始化中的預設建構子錯誤
將加密功能封裝在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中文網其他相關文章!