ホームページ > バックエンド開発 > C++ > 引数を指定せずに Blowfish オブジェクトをインスタンス化すると「デフォルト コンストラクターがありません」というエラーが発生するのはなぜですか?これはどのように修正すればよいですか?

引数を指定せずに Blowfish オブジェクトをインスタンス化すると「デフォルト コンストラクターがありません」というエラーが発生するのはなぜですか?これはどのように修正すればよいですか?

Susan Sarandon
リリース: 2024-11-27 06:40:13
オリジナル
185 人が閲覧しました

Why Does Instantiating a Blowfish Object Without Arguments Produce a

エラー: 「クラス "Blowfish" にはデフォルトのコンストラクターが存在しません」

質問:

コンストラクター引数を明示的に指定せずに Blowfish クラスのオブジェクトをインスタンス化しようとすると、コンパイラは、「クラス "Blowfish" にはデフォルトのコンストラクターが存在しません。」というエラー メッセージを出力します。これはなぜ発生しますか?また、どうすれば解決できますか?

答え:

Blowfish クラスにデフォルトのコンストラクターが存在しないのは仕様です。クラスで単一のコンストラクターが定義されている場合でも、コンパイラーはデフォルトでデフォルトのコンストラクターを合成しなくなりました。

解決策:

このエラーを解決するには、次のオプションがあります。 :

  1. デフォルトを指定しますconstructor: 引数を必要としないデフォルトのコンストラクターを定義します。例:
Blowfish() : _algorithm(CBC) {}
ログイン後にコピー
  1. オブジェクトをインスタンス化するときに引数を指定します: Blowfish クラスのオブジェクトを作成するときに、必要な BlowfishAlgorithm 値を明示的に指定します。例:
Blowfish blowfish(ECB);
ログイン後にコピー
  1. Use C 11's =default: 引数を取るコンストラクターを定義しますが、引数が持つコンストラクターを生成するようにコンパイラーに指示します。定義していない場合は作成されます。これは = デフォルト構文を使用して行われます。例:
class GameCryptography {
public:
    GameCryptography(BlofishAlgorithm);

    // Generate the default constructor
    GameCryptography() = default;
};
ログイン後にコピー

追加メモ:

「ECB」、「CBC」、「CFB」などの用語は、暗号化アルゴリズム自体ではなく、暗号化アルゴリズムの動作モード。これらの用語をアルゴリズム名として使用すると、誤解や誤りが生じる可能性があります。

以上が引数を指定せずに Blowfish オブジェクトをインスタンス化すると「デフォルト コンストラクターがありません」というエラーが発生するのはなぜですか?これはどのように修正すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート