C ++全局重载operator =

时间:2011-02-18 02:46:45

标签: c++ operators overloading

  

可能重复:
  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

感谢您的帮助。

3 个答案:

答案 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;