运算符重载的问题

时间:2015-03-19 10:49:12

标签: c++ struct 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;
    }
};

目前,我只是想让它获取树的名称,并添加用户输入的值以添加到树中。

我目前遇到了一些错误,我不认为我的代码甚至接近应该如何,所以如果有人能给我建议告诉我应该做什么,那将非常感激

1 个答案:

答案 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没有意义,因为它不代表任何类型