我在一个类里重载了赋值运算符,把它声明为类的友元, 编译出错:"operator ="必须是非静态成员。

网上查了一下,知道了赋值运算符必须声明为成员函数,但不知道声明为友员时的那个报错是什么意思。静态成员不是前面要加static的吗,我声明为友员的时候又没有加static... 网上查了一下,知道了赋值运算符必须声明为成员函数,但不知道声明为友员时的那个报错是什么意思。
静态成员不是前面要加static 的吗,我声明为友员的时候又没有加static
展开
 我来答
心心星亮
2010-12-09 · 超过15用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:0
展开全部
c++中 有四个操作符不能是全局域中的重载,这四个操作符是:=, ->, operator[ ], operator()。
所以=的重载不能声明成类的友元。而且函数operator=默认是静态成员函数,所以只能访问静态数据成员
你没贴代码,我就举个例子吧:
class A {
public:
A &operator=(A &a); //ok 正确
friend A &operator=(const char *s); //错误,友元不属于成员函数
private:
int _size;
char *_string;
};

参考资料: c++primer

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式