struct MyStruct {
struct Node {
int a;
};
Node operator + (const Node &A, const Node &B) {
Node ret;
ret.a = A.a + B.a;
return ret;
};
};
Приведенный выше код выдает ошибку:
‘MyStruct::Node MyStruct::operator+(const MyStruct::Node&, const MyStruct::Node&)’ must take either zero or one argument
.
В то время как следующие коды компилируются правильно -
struct Node {
int a;
};
Node operator + (const Node &A, const Node &B) {
Node ret;
ret.a = A.a + B.a;
return ret;
};
и
struct MyStruct {
struct Node {
int a;
Node operator + (const Node &B) {
a += B.a;
return *this;
};
};
};
Как я могу перегрузить оператор Node
вне структуры Node
, но внутри MyStruct
?