首頁  >  文章  >  後端開發  >  為什麼實例化不帶參數的 Blowfish 物件會產生「無預設建構函式」錯誤,以及如何修復此問題?

為什麼實例化不帶參數的 Blowfish 物件會產生「無預設建構函式」錯誤,以及如何修復此問題?

Susan Sarandon
Susan Sarandon原創
2024-11-27 06:40:13116瀏覽

Why Does Instantiating a Blowfish Object Without Arguments Produce a

錯誤:“類“Blowfish”不存在默認構造函數”

問題:

當嘗試實例化Blowfish當類別的物件而不明確指定建構函式參數時,編譯器會發出錯誤訊息,「類別「Blowfish」不存在預設建構函式。」為什麼會發生這種情況,如何解決?

答案:

Blowfish 類別中沒有預設建構子是設計使然。當類別定義了單一建構函式時,編譯器預設不再合成預設建構函式。

解決方案:

要解決此錯誤,您有以下選項:

  1. 提供預設建構子:定義一個預設建構函數,不需要任何參數。例如:
Blowfish() : _algorithm(CBC) {}
  1. 實例化物件時指定參數:建立 Blowfish 類別的物件時明確指定所需的 BlowfishAlgorithm 值。例如:
Blowfish blowfish(ECB);
  1. 使用C 11's = default: 定義一個帶有參數的建構函數,但也指示編譯器產生它應具有的構造函數如果您沒有定義,則已建立。這是透過 = 預設語法完成的。例如:
class GameCryptography {
public:
    GameCryptography(BlofishAlgorithm);

    // Generate the default constructor
    GameCryptography() = default;
};

附加說明:

請注意,術語「ECB」、「CBC」、「CFB」等是加密演算法的操作模式而不是加密演算法本身。使用這些術語作為演算法名稱可能會導致誤解和錯誤。

以上是為什麼實例化不帶參數的 Blowfish 物件會產生「無預設建構函式」錯誤,以及如何修復此問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn