ここからの情報を使用してクラス間で情報を共有しようとしていますが、これら2つのクラスをコンパイルして、相互に通信することができません。
したがって、私が欲しいのは、ClassB
への参照を取得しClassA
、
ClassB
で初期化することClassA
です。
コンパイラエラー(g ++を使用):
メンバー関数内
'void ClassA::foo()'
:
hello.cpp:9:エラー:'ClassB'
このスコープで宣言されていません
hello.cpp:9:エラー:'someB'
このスコープで宣言されていませんhello.cpp:9:エラー: hello.cpp:9
の前に型指定子が必要です'ClassB'
:エラー:';'
前に予想'ClassB'
class ClassB;
だから私は前に追加してみますClassA
、
お気に入り:
class ClassB; // just this here.
class ClassA; // all of classA here.
class ClassB; // all of classB here.
そして私は得る:
hello.cpp:メンバー関数内'void ClassA :: foo()':
hello.cpp:11:エラー:不完全な型の無効な使用' struct
ClassB'hello.cpp:3:エラー:' structClassB'helloの前方
宣言.cpp:12:エラー:不完全な型'structClassB'の無効な使用
hello.cpp:3:エラー:'structClassB'の前方宣言
これは、上記のWebサイトに基づいて使用しようとしているコードです。
include stdio.h
class ClassA {
public:
void foo() {
ClassB *someB = new ClassB();
someB->setRelative(this);
}
void bar() {
printf("B is communicating with me =)\n");
}
};
class ClassB {
ClassA *m_relative;
public:
void setRelative(ClassA *other) {
this->m_relative = other;
}
void foo() {
m_relative->bar();
}
};