class B; class A { public: A () { B* pb = new B; printf ("A()"); }; ~A () { printf ("~A()"); }; }; class B { public: B () { printf ("B()"); }; ~B () { printf ("~B()"); }; }; int main(int argc, char* argv[]) { printf("Hello World!\n"); return 0; }
以上代码会报:
error C2512: 'B' : no appropriate default constructor available
因为A的构造函数是内联函数,编译器展开的时候,没有发现B的构造函数,所以报错了。