运营商=可能不是会员吗?

The*_* do 3 c++

有一个形式的建筑:

struct Node
{
Node():left_(nullptr), right_(nullptr)
{ }
int id_;
Node* left_;
Node* right_;
};
Run Code Online (Sandbox Code Playgroud)

我想启用语法:

Node parent;
Node child;
parent.right_ = child;
Run Code Online (Sandbox Code Playgroud)

所以为了做到这一点,我需要:

Node& operator=(Node* left, Node right);
Run Code Online (Sandbox Code Playgroud)

但我得到的消息是,operator =必须是fnc的成员; 有没有办法绕过这个限制?

Bjö*_*lex 5

为什么不用parent.right_ = &child?如果可能的话,创建一个为指针赋值类型的重载运算符将是一个非常糟糕的主意.它会混淆真正发生的事情并使代码更难理解读取它的人.

好吧,你已经接受了答案,但无论如何,你可以做那些编写Boost.Format的人做的事情,只选择一些其他可以作为非成员函数重载的运算符,并且冲突的可能性很低(他们选择%) .在我看来,这有点不那么混淆了.