【发布时间】:2014-05-02 07:15:23
【问题描述】:
class CFruit {
private:
string m_name;
public:
string getName() const;
CFruit(string name = "NoName");
};
fruitsalad 在 CFruitSalad 类中表示:
class CFruitSalad {
//Overloaded Operators
friend ostream& operator <<(ostream& out, const CFruitSalad& f);
friend CFruitSalad operator +(const CFruit& f1, const CFruit& f2);
private:
string m_fruitsalad;
public:
CFruitSalad(string content = "");
string getName() const;
};
现在当我使用时写这个:
CFruit f1("Apple");
CFruit f2("Orange");
CFruit f3 ("Banana");
CFruitSalad fs;
fs = f1 + f2 + f3; //this line generates the error
cout << "Content: " << fs << endl;
编译程序时收到以下错误: 错误 C2678:二进制“+”:未找到采用“CFruitSalad”类型的左侧操作数的运算符 (或者没有可接受的转换)
为什么会出现此错误以及如何解决?
【问题讨论】:
-
将第一个参数的类型从
CFruit改为CFruitSalad。
标签: c++ operators operator-overloading