未解決の外部シンボル エラー: メイン メソッドから静的フィールドを設定
メイン メソッドからクラス内の静的フィールドを更新しようとすると、開発者は、「LNK2001: 未解決の外部シンボル」というエラーが発生する可能性があります。このエラーは、適切なリンクのために静的クラス メンバーをクラス定義の外で定義する必要があるという特定のルールが原因で発生します。
次のコードを考えてみましょう。
<code class="cpp">class A { public: A() { /* Implementation */ } }; class B { public: static A* a; }; int main() { B::a = new A; // Attempting to set the static field }</code>
このコードでは、次のことを試みます。クラス B の静的フィールド a を、メイン メソッドからの新しい A オブジェクトに設定します。ただし、a の定義が欠落しているため、コンパイラは「LNK2001」エラーをスローします。
C 標準によれば、クラス定義内の静的データ メンバーの宣言は定義とみなされません。代わりに、クラス名と :: 演算子を使用して、名前空間スコープ内のクラスの外側に定義を提供する必要があります。修正されたコードは次のとおりです。
<code class="cpp">class A { public: A() { /* Implementation */ } }; class B { public: static A* a; // Declaration }; // Definition of static field outside the class A* B::a; int main() { B::a = new A; // Setting the static field }</code>
クラスの外で を定義することで、コンパイラはシンボルを適切にリンクし、メイン メソッドから静的フィールドを変更できるようにします。
以上がMain メソッドから静的フィールドを設定すると「未解決の外部シンボル」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。