C++ globally overloaded operator= [duplicate]
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;
精彩评论