开发者

C++ globally overloaded operator= [duplicate]

This question already has answers here: Closed 11 years ago.

Possible Duplicate:

What does “operator = must be a non-static member&rd开发者_StackOverflow社区quo; mean? (C++)

Hi,

I have the following code...

// Header file
  struct dataRecord{
     size_t id;
     char name[gcNameLength];
  };

  void operator=(dataRecord &adr, const dataRecord &bdr);

How ever gcc gives me the following error when compiling.

error: ‘void operator=(dataRecord&, const dataRecord&)’ must be a nonstatic member function

Thanks for the help.


You need to overload = operation on the struct dataRecord itself.

Something like:

struct dataRecord{
   size_t id;
   char name[gcNameLength];
   dataRecord& operator= (const dataRecord&) {
       // write overload code here
   }
};


There is not such a thing as an operator= function. The operator has to be a member of the class or struct. The argument for that function is taken as the rvalue. The object with the member function is the lvalue.


As stated in What does “operator = must be a non-static member” mean?, the operator overload needs to be a member function.

Note that when you overload the operator=, you should return a reference to the left operand, so it won't break the flow and will allow expressios like:

dataRecord r1;
dataRecord r2;
...
dataRecord r3 = r2 = r1;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜