在C 中進行物件導向程式設計時,遇到與預設建構子相關的錯誤並不罕見。本綜合指南將幫助您理解並解決「類別不存在預設建構子」問題。
嘗試實例化時出現「類別不存在預設建構子」錯誤類別的對象,而不向其建構子提供必要的參數。預設建構函數是一個特殊的成員函數,當未指定參數時,它會用預設值初始化物件。
此錯誤的最常見原因是當一個類別被使用一個或多個建構函式定義,但缺少預設建構子。一旦類別定義了任何建構函數,編譯器將不會自動產生預設建構函數。
要解決此錯誤,您有三個選擇:
1 。定義預設建構函數:
您可以在類別中定義一個不帶任何參數的預設建構函數,如下面更正後的類別所示:
class GameCryptography { public: Blowfish _blowfish; GameCryptography(); void Decrypt(unsigned char packet[]); void Encrypt(unsigned char packet[]); Blowfish Blowfish; void SetKey(unsigned char k[]); void SetIvs(unsigned char i1[],unsigned char i2[]); };
2.提供現有建構子參數:
當實例化物件時,可以明確地提供建構子所需的參數,而無需預設建構子。
3.使用「nullptr」初始化器:
此選項僅適用於C 20,允許您將物件初始化為nullptr,而無需明確定義預設建構子:
GameCryptography* gc = nullptr;
a.指定演算法:
需要注意的是,ECB 和 CBC 等操作模式本身並不被視為演算法。如此提及它們可能會導致誤解。
b。編譯時錯誤與執行時錯誤:
預設建構子錯誤通常在編譯時偵測到。這與程式執行期間發生的運行時錯誤相反。
透過了解本指南中提供的原因和解決方法,您可以有效地解決在使用時出現「類別不存在預設建構子」的錯誤C 類別。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3