我正在學習操作符重疊。我創建了簡單的類來測試它。重載操作符和修改字符串
class Beer{
public:
Beer(int oner , int twor , string name){
this -> one = oner;
this -> two = twor;
this -> name = name;
};
int getOne(){
return this -> one;
};
int getTwo(){
return this -> two;
};
string getName(){
return this -> name;
};
Beer operator + (const Beer &a)const {
return Beer(5,two+a.two,"firstName");
};
Beer operator + (string a)const {
this -> name = this -> name +" "+a;
};
private:
int one;
int two;
string name;
};
我想弄清楚,如何midify與重載操作數的字符串。我聲明的功能
引發有關傳遞const字符串的錯誤。
我嘗試使用
Beer operator + (const string *a)const {
swap(this -> name , this -> name + " " + a);
return *this;
};
哪抱怨之一是cosnst字符串,塞康一個是基本的字符串。
這個想法很簡單。
Beer one (5, 6, "one")
one + "two"
// one.name = "one two"
什麼是正確的方法如何做到這一點?
//與交換錯誤
error: no matching function for call to 'swap(const string&, std::basic_string<char>)'|
//用繩子埃羅
passing 'const string {aka const std::basic_string<char>}' as 'this' argument of 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(std::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]' discards qualifiers [-fpermissive]|
請發佈確切的編譯器錯誤,你會得到。 – aschepler
順便說一句,類方法定義結束時的分號是不必要的。 – sigmalha