5

我已通读应将 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);

我的cp:

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

1 回答 1

8

它不是Animal类的成员,也不应该是。所以不要把它定义为一个。Animal::通过删除前缀将其定义为自由函数。

ostream & operator<< (ostream & o, Dog & d){
    //...
}
于 2013-03-11T02:48:02.247 回答