我想在类A中声明和使用类B,并在类A外定义类B。
我确信这是可能的,因为Bjarne Stroustrup在他的书“C ++编程语言”(例如第293页的String和Srep类)中使用了这种方法。
以下是导致问题的最小代码片段:
这段代码在g++中会产生以下编译错误:
我尝试查看了C++ Faq,最接近的是这里和这里,但它们不适用于我的情况。我也从这里阅读了内容,但它并没有解决我的问题。
gcc和MSVC 2005都对此给出了编译器错误。
以下是导致问题的最小代码片段:
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都对此给出了编译器错误。
inline
关键字将函数定义为内联函数。 - Phlucious