C は、システムプログラミング、組み込み開発などの分野で広く使用されているプログラミング言語として、高い柔軟性と拡張性を備えています。しかし、使っていくうちにさまざまな問題に遭遇することもあります。この記事では、一般的な問題である C 構文エラー、つまりクラス内で静的メンバーを初期化できない問題について説明し、いくつかの解決策を紹介します。
C では、静的メンバーは複数のオブジェクトで共有でき、通常はクラス関連のデータを保存および共有するために使用されます。通常のメンバーとは異なり、静的メンバーはどのオブジェクトにも属さず、クラス全体に属します。したがって、オブジェクトを作成せずに、クラス名を使用して直接アクセスできます。
静的メンバーを初期化するには、通常 2 つの方法があります。
For最初の方法では、クラス定義での初期化に次の構文を使用できます。
class MyClass { public: static int x = 10; // 错误 static int y; // 可以不赋初值 };
上記のコードでは、静的メンバー変数 x
に初期値 10 を割り当てます。クラスは定義されていますが、実際にはこれは許可されていません。コンパイル時に次のエラーが表示されます。
C++ 语法错误:静态成员不能再类内初始化
2 番目のメソッドに関しては、次の構文を使用してクラスの外で初期化できます。
class MyClass { public: static int x; }; int MyClass::x = 10;
このようにして、静的メンバ変数 #xxx 初期値が代入されます。
class MyClass { public: static const int x = 10; // 可以赋初值 };
class MyClass { public: static int x; // 声明静态成员变量 static void init(int value) { // 静态成员函数 x = value; } }; int MyClass::x = 0; // 定义静态成员变量 int main() { MyClass::init(10); // 调用静态成员函数进行初始化 return 0; }
class MyClass { public: static int x; }; int global_x = 10; // 定义全局变量 int main() { MyClass::x = global_x; // 通过全局变量初始化静态成员变量 return 0; }
以上がC++ 構文エラー: クラス内で静的メンバーを初期化できません。どのように対処すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。