簡単に言うと:
大部分が静的パブリック メンバーで構成されているクラスがあるため、他のクラス/関数から呼び出す必要がある類似の関数をグループ化できます。
とにかく、クラスのパブリック スコープに 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指定子を使用するだけで済みますinline
(https://stackoverflow.com/a/11711082/55721)
C++標準の古いバージョンを使用する場合は、XとYの宣言と一致するように定義を追加する必要があります。
unsigned char test::X;
unsigned char test::Y;
どこかに静的メンバーを初期化したい場合もあるでしょう
unsigned char test::X = 4;
そして、これは定義(通常はCXXファイル)で行い、宣言(通常は.Hファイル)では行いません。