操作员过载问题

Problems with operator overloading

本文关键字:问题 操作员      更新时间:2023-10-16

我一直试图在程序中使用运算符重载,但遇到了问题。

基本上,我有一个二进制搜索树,我正在尝试获取它,这样,如果你输入类似"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没有任何意义,因为它不代表任何类型的