【发布时间】:2011-06-29 13:25:03
【问题描述】:
可能重复:
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
感谢您的帮助。
【问题讨论】:
-
“必须是非静态成员函数” - 这里有什么不清楚的地方?
-
在这种情况下,错误消息非常准确地说明了问题:如果你要重载
operator=,你不能把它作为一个全局函数——你必须使用一个非-static 成员函数(使用全局的通常原因是允许在左操作数上进行转换,但无论如何这不适用于赋值)。 -
所以它必须是struct的一部分,不能是全局的。
-
部分错误信息说明了一切——必须是非静态成员函数。
标签: c++ operators overloading