次のコードでは:
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()
も文句を言わないのですか?