【问题标题】:Overloading output stream for my own class为我自己的班级重载输出流
【发布时间】:2013-11-27 08:07:09
【问题描述】:

我有一个 Cat 和 Dog 类派生自的基类 Animal。

我正在尝试重载输出流,以便可以执行以下操作:

Animal *a = (animal *) 0;
while(read_animal(cin, a) && a)       // a has been assigned a derived class
    cout << *a << '\n';

这就是我重载它的方式:

 ostream& operator<<(ostream &a, const animal* animal) {
     return a << animal->describe() << endl;
}

但我得到一个错误:

错误 20 错误 C2679:二进制“

想法?

【问题讨论】:

    标签: c++ operator-overloading output


    【解决方案1】:

    试试

    cout << a << '\n';
    

    由于您的重载需要const animal* animal

    或者将函数的签名更改为:

     ostream& operator<<(ostream &a, const Animal& animal) {
         return a << animal.describe() << endl;
    }
    

    【讨论】:

      【解决方案2】:

      您的过载需要const animal*,但您提供的是*a,即animal,而不是animal*。所以你可以试试:

      cout << a << '\n';
      

      【讨论】:

        猜你喜欢
        • 2016-09-20
        • 2013-05-12
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多