クラス A の内部でクラス B を宣言して使用し、A の外部で B を定義しようとしています。Bjarne Stroustrup
が彼の著書「C++ プログラミング言語」でこれを使用している
ため、これが可能であることを知ってい
ます (たとえば、293 ページ)。 String および Srep クラス)。
したがって、これは問題を引き起こす私の最小限のコードです
class A{
struct B; // forward declaration
B* c;
A() { c->i; }
};
struct A::B {
/*
* we define struct B like this becuase it
* was first declared in the namespace A
*/
int i;
};
int main() {
}
このコードにより、 g++ で次のコンパイル エラーが発生します。
tst.cpp: In constructor ‘A::A()’:
tst.cpp:5: error: invalid use of undefined type ‘struct A::B’
tst.cpp:3: error: forward declaration of ‘struct A::B’
私は C++ Faq を見ようとしましたが、私が得たクローゼットはこことここにありましたが、
それらは私の状況には当てはまりません。
ここからこれも読みましたが、問題は解決していません。
gcc と MSVC 2005 の両方で、これに関するコンパイラ エラーが発生します。