构造函数内联神奇

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的构造函数,所以报错了。
原文地址:https://www.cnblogs.com/lin1270/p/2174311.html