看这个例子:
#ifdef BASE struct Base { #endif struct B; struct A { B *b; A(){ b->foo(); } }; struct B { void foo() {} }; #ifdef BASE }; #endif int main( ) { return 0; }
如果BASE被定义,代码是有效的.
在A的构造函数中,我可以使用尚未声明的B :: foo.
为什么这个工作,大部分是为什么只在课堂里工作?