静的クラスメンバーの未解決の外部シンボル 質問する

静的クラスメンバーの未解決の外部シンボル 質問する

簡単に言うと:

大部分が静的パブリック メンバーで構成されているクラスがあるため、他のクラス/関数から呼び出す必要がある類似の関数をグループ化できます。

とにかく、クラスのパブリック スコープに 2 つの静的 unsigned char 変数を定義しましたが、同じクラスのコンストラクターでこれらの値を変更しようとすると、コンパイル時に「未解決の外部シンボル」エラーが発生します。

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

    ...

    test();
};

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

私は C++ 初心者なので、お手柔らかにお願いします。なぜこれができないのでしょうか?

ベストアンサー1

使用している場合C++ 17指定子を使用するだけで済みますinlinehttps://stackoverflow.com/a/11711082/55721


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

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

どこかに静的メンバーを初期化したい場合もあるでしょう

unsigned char test::X = 4;

そして、これは定義(通常はCXXファイル)で行い、宣言(通常は.Hファイル)では行いません。

おすすめ記事