次のコードでは:
class A
{
A() {}
friend class B;
};
class B
{
public:
void foo() {A* p=new A;};
};
int main()
{
B b;
b.foo();
A* p = new A;
return 0;
}
関数foo()はコンパイルに合格しますが、行は合格A* p = new A;しません。どうすればいいの?newグローバル演算子であるため、プライベートコンストラクターを呼び出すことはできません。なぜコンパイラーfoo()も文句を言わないのですか?