C++ classのプロトタイプ宣言
「あるclass内の関数で、別のクラス型の引数を取る」ということを相互に行ったことで、コンパイルが通らなかった。
C++で
class A{ hoge(B b) };
class B{ fuga(A a) };
ってすると、Aのclassの方で「B がまだ定義されてませんし」って言われる
— やざてん (@Yazaten) 2014, 7月 19
クラスのプロトタイプでググってるけど分からなくてくじけそう
— やざてん (@Yazaten) 2014, 7月 19
みたいなことを呟いたら「クラスのプロトタイプを宣言して、うまいことやればできる」という事を教わったので書いておきます。
@Yazaten 順番の問題で, http://t.co/JDdh7E8ZWq のようにすれば通ります.
— 102 (しばらく増えなかったら煽って) (@Mi_Sawa) 2014, 7月 19
元のコード(コンパイル通らなかった)
class A{ void hoge(B x); }; void A::hoge(B b){} class B{ void fuga(A a); }; void B::fuga(A x){} int main(){return 0;}
変更後のコード(コンパイル通るし、ちゃんと動く)
class B; class A{ void hoge(B x); }; class B{ void fuga(A a); }; void A::hoge(B b){} void B::fuga(A x){} int main(){return 0;}
フォロワーさん超ありがとうございました。