いくつかの単純でばかげたテストを書くことによって、演算子のオーバーロードの概念を理解しようとしています。これはC++をよりよく理解するのに役立つので、これは役立つかもしれないと思いました。
なぜこの例はAnimal
クラスの連結演算子を実装し、std::string
コンパイルしないのですか?G++では次のエラーが発生します。
追加の資格'Animal::' on member'operator +'[-fpermissive]
これはコードです:
#include <iostream>
using namespace std;
class Animal {
public:
string _type;
string _name;
string _sound;
Animal & Animal::operator+(const string & o);
};
Animal & Animal::operator+(const string & o) {
cout << "plus operator \n";
this->_name=o;
return *this;
}
int main( int argc, char ** argv ) {
Animal a;
a+"hhh";
cout<<a._name;
return 0;
}