私は、operator <<をフレンドとして実装する必要がありますか、それともメンバー関数として実装する必要がありますか?C ++での挿入演算子のオーバーロードも同様の問題のように見えますが、私自身の問題は修正されませんでした。
私のヘッダーファイル:
using namespace std;
class Animal {
private:
friend ostream & operator<< (ostream & o, Dog & d);
int number;
public:
Animal(int i);
int getnumber();
};
ostream & operator<< (ostream & o, Dog & d);
私のcpp:
using namespace std;
int Animal::getnumber(){
return number;
}
ostream & Animal::operator<< (ostream & o, Dog & d){
//...
}
Animal::Animal(int i) : number(i){}
実装は簡単ですが、次のエラーが発生します:in cpp-エラー:クラス"Animal"クラスにメンバー"operator<<"がありません。すでにAnimalで挿入演算子を友達として宣言しているので、実際にはわかりません。なぜまだこのエラーが発生するのですか?(ostreamを公開しても役に立ちません)