ホームページ >バックエンド開発 >C++ >C++ エラー: 非静的データ メンバーを初期化する必要があります。それを変更するにはどうすればよいですか?

C++ エラー: 非静的データ メンバーを初期化する必要があります。それを変更するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-08-22 17:45:131257ブラウズ

C++ エラー: 非静的データ メンバーを初期化する必要があります。それを変更するにはどうすればよいですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。