※ ChatGPTを利用し、要約された質問です(原文:相互参照するクラス、俺こんな日々を暮らすイェー)
C++初心者の相互参照クラスの作り方で悩んでいます
このQ&Aのポイント
C++初心者が相互参照するクラスの作り方に悩んでいます。一般的な解決法は知っていますが、具体的な方法がわかりません。
現在、自分が作っている相互参照クラスでは、エラーが生じています。メンバの参照ができないというエラーが発生しており、解決方法を教えてください。
「Test2の中にmというメンバがあるって後で教えてあげるからちょっとまって」とコンパイラに伝えられる方法を教えてください。
C++初心者です。相互参照するクラス(構造体?)の作り方で悩んでいます。一般的な相互参照の解決法は沢山のサイトに載っているのですが・・・
よくある相互参照と解決法
---------------------
struct Test2;
struct Test1{
Test2 *t2;
};
struct Test2{
Test1 *t1;
};
---------------------
これはtest1の中でtest2を使いたい時にその前に名前だけとりあえず宣言しておけばOK(wave)、というもの。(間違ってたらご指摘お願いします。)
自分が現在どうすればいいか途方に暮れている相互参照
---------------------
struct Test2;
struct Test1{
int n;
Test2 *t2;
void Func1(Test2 *t2){
this->t2->m = 777;
}
};
struct Test2{
int m;
Test1 *t1;
void Func2(Test1 *t1){
this->t1->n = 777;
}
};
---------------------
ここでは各メンバ関数内でお互いのメンバを参照します。このときのエラーは、
「Test2のメンバは宣言されていないので、mはTest2のメンバではありません。」
です。これは
this->t2->m = 777;
の行に対するエラーです。
struct Test2;
の行でメンバまで宣言することができません。
どうすれば「Test2の中にmというメンバがあるって後で教えてあげるからちょっとまって」とコンパイラに伝えられるのか、教えてください。お願いします!
お礼
おおおおお! 本当にスッキリしました。ありがとうございます。