プロつく計画1-4:3週目「クラス変数の導入」
今週も今週とて、クラス変数の導入です。
つまづいたところ
インスタンス毎に保持する必要のない変数をクラス変数にしようと、int型と同様に初期化しようとしたら、
Error: a member of type "const s3d::Font" cannot have an in-class initializer
と言われた。
どうやら、クラス定義内でstaticでない変数と同様に初期化できるstatic変数は、Integrated type(int型とか)のみに限られるそうだ。
つまづいたところ2
上と関連して。
ヘッダファイルにクラスの宣言を書くファイル分割方法で、
ヘッダファイルでstatic変数を初期化したら、このようなエラーが出る。
LNK2005 "private: static struct s3d::Color const Command::SELECTED_COLOR_"(? SELECTED_COLOR_@Command@@0UColor@s3d@@B) already defined in Block.obj
どうやら、ヘッダファイルを複数のソースファイルで読み込んでるから、何度も宣言し直してることになっているらしい。
というわけで、対応するソースファイルでクラス変数を初期化。