我正在尝试在 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 和我得到的 closeset 在这里和这里,但
这些不适用于我的情况。
我也从这里阅读了这篇文章,但这并没有解决我的问题。
gcc 和 MSVC 2005 都给出了编译器错误