我一直在尝试在程序中使用运算符重载,但是我遇到了问题。
基本上,我有一个二叉搜索树,我试图得到它,如果你输入类似" tree = tree + 7"之类的内容,它会将键值7添加为节点。我一直在试验代码来做到这一点:
struct addToTree {
string treeName;
int value;
string output;
string operator+(string addToTree &lhs, int addToTree &rhs) {
addToTree temp;
temp.output = lhs.treeName + to_string(rhs.value);
return temp.output;
}
};
目前,我只是想让它获取树的名称,并添加用户输入的值以添加到树中。
我目前遇到了一些错误,我不认为我的代码甚至接近应该如何,所以如果有人能给我建议告诉我应该做什么,那将非常感激
答案 0 :(得分:0)
operator +是一个二元运算符,意味着它将2个参数作为操作数。 您可以将其实现为自由函数或成员函数
作为成员函数,它只获得一个参数,即您要添加的元素:
returnValue SomeClass::operator + (const SomeType& addee);
在上面的示例中,第一个添加的元素始终是将+运算符保存在其中的对象。
作为自由函数,它有两个参数 - 你要总结的两个要素:
returnValue operator + (const SomeType1& addee1, const SomeType2& addee2);
这里,你混合了成员函数语法(例1)和独立功能(例2) 你需要你的成员重载只获得一个参数(或实现它作为独立的功能)。
另外,行(string addToTree &lhs, int addToTree &rhs)
语法错误string addToTree &lhs
是什么意思?它是一个字符串?是别的吗?表达式string addToTree
没有意义,因为它不代表任何类型