我有一个这样声明的类:
namespace nsp1
{
class A
{
public :
inline friend void DoSomething();
private :
A();
int a;
};
}
这样,函数
DoSomething()
将位于 namespace nsp1中。有没有一种方法可以声明此函数以使其具有内联好友和 namespace 之外的内容?
最佳答案
这是一个解决方案:
namespace nsp1
{
class A;
}
inline void DoSomething(const nsp1::A & a);
namespace nsp1
{
class A
{
public :
inline friend void ::DoSomething(const nsp1::A & a);
private :
A();
int a;
};
}
inline void DoSomething(const nsp1::A & a)
{
std::cout<<a.a<<std::endl;//a.a is private!
}