此代码的编译失败:
class P {
//public:
class C {
friend std::ostream& operator<<(std::ostream &os, const C &c);
};
};
std::ostream& operator<<(std::ostream &os, const P::C &c) {
return os;
}
错误:
test.cpp:12:53: error: 'C' is a private member of 'P'
std::ostream& operator<<(std::ostream &os, const P::C &c) {
^
test.cpp:6:9: note: implicitly declared private here
class C {
^
1 error generated.
取消注释public:
会使此代码编译。它显然可以移动到类本身。
operator<<
但是在私有成员类的 cpp 文件中定义这样的正确方法是什么?