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&)”必须采用零个或一个参数
。
虽然以下代码可以正确编译 -
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
结构之外但在 MyStruct
内部重载 Node
的运算符?
最佳答案
How can I overload operator of Node outside the Node structure but inside MyStruct?
你不能那样做。在 Node
外部和 MyStruct
内部定义的任何重载运算符都被视为 MyStruct
的重载运算符。这就是 namespace
与 struct
的不同之处。
您可以使用:
struct MyStruct {
struct Node {
int a;
};
};
MyStruct::Node operator+(MyStruct::Node const& A, MyStruct::Node const& B) {
MyStruct::Node ret;
ret.a = A.a + B.a;
return ret;
}
关于c++ - 在另一个结构中重载结构的运算符会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54914647/