为什么cout在从其他类的对象调用函数时抱怨?

时间:2015-03-09 00:05:13

标签: c++ ios c++11

我有以下这些作文课程。  问题是,在Elephant.cpp中,行:      cout<<“Elephant do:\ n”<

Practice62.cpp这是主类

#include < iostream >
#include "Animal.h"
#include "Elephant.h"

int main()
{
    Animal an;
    Elephant el(an);
    el.shout();

}

// Animal.cpp:动物类

#include "Animal.h"
#include <iostream>

using namespace std;

Animal::Animal()
{
   cout<<"Animal constructor"<<endl;
}

void Animal::eats()
{
 cout<<"eats"<<endl;
}
void Animal::sleeps()
{
 cout<<"sleeps"<<endl;
}

//Animal.h Animal header

#ifndef ANIMAL_H
#define ANIMAL_H
class Animal
{
 public:
        Animal();
        void eats();
        void sleeps();

};


//Elephant.cpp Elephant class definition

#include <iostream>
#include "Elephant.h"
#include "Animal.h"

using namespace std;

Elephant::Elephant(Animal an)
: animal(an)
{
}

void Elephant::shout()
{
 cout<<"Elephant do: \n"<<animal.eats();

}

// Elephant.h:大象标题

#ifndef ELEPHANT_H
#define ELEPHANT_H
#include <iostream>
#include "Animal.h"

using namespace std;

class Elephant
{
  public:
         Elephant(Animal an);
         void shout();
  private:
          Animal animal;
};
#endif

有人可以解释为什么cout不会接受&lt;&lt;

1 个答案:

答案 0 :(得分:0)

您在cout行中调用的功能的签名是

void eats();

这意味着它不返回任何值,因此cout无法显示任何内容。

解决此问题并将问题功能更改为:

void Elephant::shout()
{
     cout<<"Elephant do: \n"; 
     animal.eats();  // has its own cout
}