静的オブジェクト フィールドに割り当てるときに発生する「未解決の外部シンボル」エラーを解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-31 16:03:18
オリジナル
715 人が閲覧しました

How Do I Resolve the

静的オブジェクト フィールド割り当ての「未解決の外部シンボル」エラーについて

コードを作成するときに、値を別のクラスの静的オブジェクト フィールドに追加します。ただし、このような割り当てを試行すると、「未解決の外部シンボル」というメッセージが表示されるリンク エラーが発生する可能性があります。

簡略化したコード例を考えてみましょう。

<code class="cpp">class A
{
public:
    A() {}
};

class B
{
public:
    static A* a;
};

int main()
{
    B::a = new A;
}</code>
ログイン後にコピー

このコードをコンパイルしようとすると、次の結果が得られます。エラー:

error LNK2001: unresolved external symbol "public:
static class A * B::a" (?a@B@@2PAVA@@A)
ログイン後にコピー

このエラーは、静的オブジェクト フィールドがクラス宣言で暗黙的に定義されていないために発生します。 C 参照標準によれば、「クラス定義内の静的データ メンバーの宣言は定義ではなく、不完全な型である可能性があります。」

静的オブジェクト フィールドの定義の規則

このエラーを解決するには、クラス定義の外で静的オブジェクト フィールドを明示的に定義する必要があります。このルールは、アクセシビリティや変更可能性に関係なく、すべての静的オブジェクト フィールドに適用されます。

定義例:

<code class="cpp">A* B::a = nullptr;</code>
ログイン後にコピー

定義を囲む名前空間スコープに配置すると、次のことが保証されます。リンカは、main() で割り当てを解決しようとするときにシンボルを見つけることができます。

以上が静的オブジェクト フィールドに割り当てるときに発生する「未解決の外部シンボル」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!