我正在练习运算符重载,我已经做了一百次运算符重载,但是这一次,如果我将此代码与旧代码语法(符合要求的)进行比较,那么我的行为很烦人,我发现语法没有任何变化,请指导我。谢谢< / p>
EROR:[错误]“两个运算符=(一个,两个)”必须是非静态成员函数
<tbody>
{this.state.arr.map((card)=>{
return(
<tr>
<td>{card.user_name}</td>
<td>{card.address}</td>
<td>{card.date_of_birth}</td>
<td>{card.email}</td>
<td>{card.profile_picture}</td>
<td><button className="btn btn-outline-primary ml-2 my-2 my-sm-0">Edit</button></td>
<td><button className="btn btn-outline-primary ml-2 my-2 my-sm-0">Delete</button></td>
</tr>
) })}
</tbody>
[错误]“两个运算符=(一个,两个)”必须是一个非静态成员函数
答案 0 :(得分:2)
您想要的:
#include<iostream>
using namespace std;
class two;
class one{
int sno;
public:
one() : sno(312) {}
//one & operator =(const two & t);
int getSno() const { return sno; }
};
class two{
int seatno;
public:
two() : seatno(0) {}
two & operator = (const one & o);
int getSeatno() const { return seatno; }
};
two & two::operator =(const one & o)
{
seatno = o.getSno();
return *this;
}
int main()
{
one a1;
two b1;
cout << b1.getSeatno() << endl;
b1=a1;
cout << b1.getSeatno() << endl;
}
对于类型 T ,operator=
的签名为T & operator(const TT &);
,其中 TT 可以为 T 。< / p>
operator=
不能成为其他成员,请参见https://en.cppreference.com/w/cpp/language/operators。
还需要注意一个获取方法,以获取非公共属性 seatno 和 sno
的值编译和执行:
/tmp % g++ -pedantic -Wall -Wextra a.cc
/tmp % ./a.out
0
312