В классе нет члена «оператора» & lt; & quot;

Я прочитал Должен оператор<< быть реализован как друг или как функция-член? а также Оператор вставки перегрузки в 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){}

Реализация проста, но я получаю ошибку: в cpp — Ошибка: класс «Животное» класс не имеет оператора «член»<<». Я действительно не понимаю, потому что я уже объявил оператор вставки в друзья в Animal, почему я все еще получаю эту ошибку? (публичное размещение ostream не помогает)

4

Решение

Это не член Animal класс, и не должно быть. Так что не определяйте это как единое целое. Определите это как свободную функцию, удалив Animal:: префикс.

ostream & operator<< (ostream & o, Dog & d){
//...
}
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]