有一个形式的建筑:
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的成员; 有没有办法绕过这个限制?
为什么不用parent.right_ = &child?如果可能的话,创建一个为指针赋值类型的重载运算符将是一个非常糟糕的主意.它会混淆真正发生的事情并使代码更难理解读取它的人.
好吧,你已经接受了答案,但无论如何,你可以做那些编写Boost.Format的人做的事情,只选择一些其他可以作为非成员函数重载的运算符,并且冲突的可能性很低(他们选择%) .在我看来,这有点不那么混淆了.