所以昨天我问了这个问题private friend operator<< 关于如何让operator<<
私人的类。我得到了一个非常好的答案, 完全按照我的意愿工作,但我还有一些其他问题。私人朋友运营商的代理类<<
首先,我不明白代理类怎么不一定是朋友private_printable
?我如何可以从operator<<
以内访问private_printable
的内部成员?
其次,虽然从答案的代码打,我写了这个:
operator proxy() const { return *this; }
起先似乎确定了我,它甚至编译,但是当我运行它,并得到了段错误 我意识到,我还没有为代理类定义任何构造函数, 将采用private_printable
作为参数,从而允许转换。 那么,我的代码如何编译,甚至没有给我任何警告?
然后我做的第三件事是给代理一个构造函数,它的参数 到private_printable
作为它的参数(我没有明确说明)而不是定义转换运算符。 现在一切正常,除了再次有可能拨打operator<<
在private_printable
。但我不确定,为什么发生这种情况。 是因为ADL吗?我对此有一些模糊的理解,但我不确定其所有细节。无论如何,proxy
类是私人的,那么为什么 ADL有什么不同?
再次感谢您的帮助,现在我清楚了:) – jcxz 2013-03-27 16:23:52