C プログラミングでは、クラスの非静的データ メンバーを定義するときに、それらがコンストラクターまたは初期化リストで初期化されていない場合、次のエラーが発生します。 -static データ メンバーが初期化されると、コンパイラがメンバーにメモリ領域を割り当てることができなくなり、クラスのインスタンス化に失敗します。
この問題を解決するには、次のような対策が考えられます:
1. コンストラクターでメンバー変数を初期化する
定義時にメンバー変数を初期化しないと、クラスを初期化するには、コンストラクターで初期化できます。場合によっては、このアプローチの方が柔軟です。例:
class Person{ public: Person() { age = 18; name = "Tom"; } private: int age; string name; };
上記のコードでは、Person クラスを定義するときに age と name のメンバー変数を初期化せず、コンストラクターで初期化しました。クラス内に複数のコンストラクターがある場合、すべてのコンストラクターでメンバー変数を初期化する必要があることに注意してください。
2. メンバー初期化リストで初期化する
C では、メンバー初期化リストは、クラスの非静的メンバー変数を初期化するために使用されるメソッドです。クラス内の非静的メンバー変数は、コンストラクター名の後にコロンを追加し、コンストラクターの後のメンバー初期化リストでメンバー変数とその初期化式を設定することにより、迅速かつ明確に初期化できます。例:
class Person{ public: Person(): age(18), name("Tom"){} private: int age; string name; };
上記のコードでは、メンバー初期化リストを使用して、age および name メンバー変数を初期化します。
メンバー変数の型がユーザー定義型の場合、その型にデフォルトのコンストラクターがあることを確認する必要があることに注意してください。そうしないと、コンパイラはメンバー初期化リストを使用して初期化するときに適切なコンストラクターを見つけることができません。
概要
C では、クラスの非静的データ メンバーを定義するときに初期化する必要があります。そうでない場合は、非静的データ メンバーを初期化する必要があるというエラーが発生します。この問題を解決するには、コンストラクターでメンバー変数を初期化するか、メンバー初期化リストを使用して初期化します。いずれの場合も、すべてのメンバー変数が初期化されていることを確認してください。
以上がC++ エラー: 非静的データ メンバーを初期化する必要があります。それを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。