操作员过载问题
Problems with operator overloading
我一直试图在程序中使用运算符重载,但遇到了问题。
基本上,我有一个二进制搜索树,我正在尝试获取它,这样,如果你输入类似"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;
}
};
目前,我只是想让它取树的名称,并将用户输入的值添加到树中。
我目前遇到了很多错误,我认为我的代码甚至没有达到应有的水平,所以如果有人能给我建议,告诉我应该做什么,我将不胜感激。
运算符+是一个二进制运算符,这意味着它可以获得2个参数作为操作数。您可以将其实现为免费功能或成员功能
作为成员函数,它只得到一个参数,即您想要添加的元素:
returnValue SomeClass::operator + (const SomeType& addee);
在上面的例子中,第一个添加的元素总是包含+运算符的对象。
作为自由函数,它有两个参数——你想总结的两个元素:
returnValue operator + (const SomeType1& addee1, const SomeType2& addee2);
在这里,您混合了成员函数语法(示例1)和独立函数(示例2)您需要您的成员重载来只获得1个参数(或将其实现为独立函数)。
此外,线路(string addToTree &lhs, int addToTree &rhs)
string addToTree &lhs
的意思是什么?它是一根绳子吗?是别的东西吗?表达式CCD_ 3没有任何意义,因为它不代表任何类型的