可能重复:
What does “operator = must be a non-static member” mean? (C++)
您好,
我有以下代码......
// Header file
struct dataRecord{
size_t id;
char name[gcNameLength];
};
void operator=(dataRecord &adr, const dataRecord &bdr);
编译时gcc如何给我以下错误。
error: ‘void operator=(dataRecord&, const dataRecord&)’ must be a nonstatic member function
感谢您的帮助。
答案 0 :(得分:5)
您需要在=
本身上重载struct dataRecord
操作。
类似的东西:
struct dataRecord{
size_t id;
char name[gcNameLength];
dataRecord& operator= (const dataRecord&) {
// write overload code here
}
};
答案 1 :(得分:2)
没有operator = function这样的东西。运算符必须是类或结构的成员。该函数的参数被视为右值。具有成员函数的对象是左值。
答案 2 :(得分:2)
如What does “operator = must be a non-static member” mean?中所述,运算符重载必须是成员函数。
请注意,当你重载operator =时,你应该返回对左操作数的引用,这样它就不会破坏流程并允许表达式如下:
dataRecord r1;
dataRecord r2;
...
dataRecord r3 = r2 = r1;