"static"を付け間違えて、C++のクラスメソッド宣言と実装ではまった
C++でクラスメソッドを作る際、当然ながらstatic宣言子が必要になりますよね。
こんなコードを書いたらコンパイルエラーが出ました。
class SomeClass { public: static void someMethod(); }; static void SomeClass::someMethod() { hogehoge(); }
出たコンパイルエラーは、
a storage class may not be specified here
いろいろ試したところ、どうやら実装のほうにはstaticキーワードは必要ないご様子。
class SomeClass { public: static void someMethod(); }; void SomeClass::someMethod() { hogehoge(); }
これでコンパイル通りました。
うぬぬ、なぜ片方必要だったり必要なかったりするんだ……