友元重载问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 11:19:52
我在类chaoshu中声明friend long operator =(long&,chaoshu &);
却出现错误: 'operator =(long&,chaoshu &)'must be a member function
请问怎么回事?那位大神帮帮忙啊!
以下为原文:
class chaoshu
{
private:
char sp;
char vol[128];
int len;
public:
chaoshu(){sp=len=0;}
chaoshu(long);
char operator ==(chaoshu &);
char operator >(chaoshu &);
char operator <(chaoshu &);
chaoshu operator -(chaoshu &);
chaoshu operator +(chaoshu &);
chaoshu operator *(chaoshu &);
chaoshu operator /(long);
long operator %(long);
chaoshu operator /(chaoshu &);
friend long operator =(long&,chaoshu &);
friend char* operator =(char*,chaoshu &);
void show();
};
long operator =(long &s,chaoshu &u)
{
long d=0;
int i;
for(i=u.len-1;i>=0;i--)d=d*10+u.vol[i];
s=d;
return d;
}
char* operat

C++不允许将运算符重载函数申明为类的友元函数,除非这个重载函数不是全局函数,而是某个类的成员函数。

C++不允许将赋值运算符重载为全局方法,也就是不能用友元

要将赋值运算符的重载函数放到类内,重载为类的成员函数..

因为这样可能会出现2.0 = chaoshu c(3.0);(这显然是错的)