【发布时间】:2017-04-29 16:41:55
【问题描述】:
我注意到这个网页说用户定义的转化可以在关键字“朋友”之前
http://en.cppreference.com/w/cpp/language/cast_operator
可以包含除类型说明符或关键字之外的任何说明符 静态的,特别是,除了显式,说明符内联, virtual、friend 和 constexpr 也是允许的。
所以我尝试了一下,但似乎无法让朋友使用转换运算符(它提到的其他关键字确实有效)。
网页是否不正确,或者有没有办法使用朋友声明来做到这一点?
class t_friend_conversion_error
{
public:
operator int ( ) ; //ok
virtual operator int * ( ) ; //ok
inline operator int ** ( ) ; //ok
constexpr operator int **** ( ) ; //ok
friend operator char ( ) ; //error
} ;
【问题讨论】:
-
在类的转换函数上使用“朋友”不是没有意义,因为该转换函数已经可以访问作为类成员的私有部分吗? operator 关键字必须以其他类名作为前缀,以便朋友使用来授予额外的权限..
标签: c++ operator-keyword friend typeconverter