مشکل در overload کردن operator+ خطا :no operator found which takes a left-hand operand” - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل در overload کردن operator+ خطا :no operator found which takes a left-hand operand”

0 امتیاز

سلام خسته نباشید

من چند تا کلاس تعریف کردم به این شکل :

class CFruit { 
private: 
 string m_name; 
public: 

 string getName() const; 

 CFruit(string name = "NoName"); 
};
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;
 cout << "Content: " << fs << endl;

ولی اون حطی که f1,f2,f3 رو جمع میزنم برنامه ارور میده :

C2678: binary '+' : no operator found which takes a left-hand operand of type 'CFruitSalad' (or there is no acceptable conversion)

مشکل از چیه ؟؟

سوال شده فروردین 4, 1393  بوسیله ی York (امتیاز 53)   4 7 11
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
f1 و f2 و f3 نمونه هایی از کلاس CFruit هستند .

شما دارید f1 و f2 و f3 رو با عملگر + با هم جمع میکنید در صورتی که هیچ عملگر +ی رو برای کلاس CFruit سربازگذاری نکردید .

باید برای کلاس CFruit عملگر + رو طوری که میخواهید پیاده سازی کنید تا مشکل برطرف بشه .
پاسخ داده شده فروردین 5, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
انتخاب شد فروردین 5, 1393 بوسیله ی York
سلام
عملگر + رو داخل CFruitSalad تعریف کردم
friend CFruitSalad operator +(const CFruit& f1, const CFruit& f2);
به چه شکل باید کدم رو عوض کنم تا درست بشه ؟ :(
این 2 تا عملگر رو هم تعریف کن درست میشه
friend CFruitSalad operator +(const CFruitSalad & f1, const CFruit& f2);
friend CFruitSalad operator +(const CFruit& f1, const CFruitSalad & f2);
...