如何为像这样的嵌套私有(private)类重载运算符<<?
class outer {
private:
class nested {
friend ostream& operator<<(ostream& os, const nested& a);
};
// ...
};
在外部类编译器之外尝试时会提示隐私问题:
error: ‘class outer::nested’ is private
最佳答案
你可以制作 operator<<
outer
的 friend 以及。或者您
可以完全实现它inline
在nested
,例如:
class Outer
{
class Inner
{
friend std::ostream&
operator<<( std::ostream& dest, Inner const& obj )
{
obj.print( dest );
return dest;
}
// ...
// don't forget to define print (which needn't be inline)
};
// ...
};
关于c++ - 可以为嵌套的私有(private)类重载 operator<< 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082190/