あったこといろいろ

ほぼ自分用備忘録です。

C++ classのプロトタイプ宣言

「あるclass内の関数で、別のクラス型の引数を取る」ということを相互に行ったことで、コンパイルが通らなかった。





みたいなことを呟いたら「クラスのプロトタイプを宣言して、うまいことやればできる」という事を教わったので書いておきます。


元のコード(コンパイル通らなかった)

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;}

フォロワーさん超ありがとうございました。