class A
{
private:
A(int x, int y);
friend A* CreateA(int x, int y);
};
namespace B
{
A* CreateA(int x, int y)
{
return new A(x, y);
}
}
编译器给出了以下错误:调用类' A'的私有构造函数。 是否可以在声明之外的其他命名空间中使用友元函数定义?
编辑: 这是解决方案:
class A;
namespace B
{
A* CreateA(int x, int y);
}
class A
{
private:
A(int x, int y);
friend A* B::CreateA(int x, int y);
};
namespace B
{
A* CreateA(int x, int y)
{
return new A(x, y);
}
}