1. ホーム
  2. c++

[解決済み] 静的クラスのメンバに未解決の外部シンボルがある

2022-05-03 14:47:53

質問

非常に簡単に言うと

私は、ほとんどが静的なパブリックメンバーで構成されるクラスを持っているので、他のクラス/関数から呼び出される必要がある類似の関数をグループ化することができます。

とにかく、私は2つの静的な符号なし文字変数をクラスのパブリックスコープで定義しました。

class test 
{
public:
    static unsigned char X;
    static unsigned char Y;

    ...

    test();
};

test::test() 
{
    X = 1;
    Y = 2;
}

C++初心者なのでお手柔らかにお願いします。どうしてこんなことができないのでしょうか?

解決方法は?

を使用している場合 C++ 17 を使用すればよいのです。 inline 指定子( https://stackoverflow.com/a/11711082/55721 )


古いバージョンのC++標準を使用している場合、XとYの宣言に合わせて定義を追加する必要があります。

unsigned char test::X;
unsigned char test::Y;

のどこかにあるはずです。 また、静的メンバである

unsigned char test::X = 4;

そして、これもまた、宣言(多くの場合、.H ファイル)ではなく、定義(通常、CXX ファイル)の中で行います。