通过引用混淆参数

时间:2016-01-09 23:32:03

标签: c++ object parameters reference

基本上我有一个返回某个对象的函数。假设它返回一个“动物”对象。

Animal Animal::breed(Animal &aFather)
  {
/*code*/
return Animal(<parameters>);
}

我有另一个功能将动物添加到列表中。在这里,参数再次作为参考传递。

void Farm::addAnimal(Animal &newAnimal)
  {
  animals.push_back(newAnimal);
  }

现在,在main.cpp中,如果我这样做:

Farm farm("This Is A Farm");
Animal * eva = new Animal(<parameters>);
Animal * adam = new Animal(<parameters>);
farm.addAnimal(*eva); //Works
farm.addAnimal(*adam); //Works

farm.addAnimal(eva->breed(*adam)); //Doesn't work.
//The function returns an Animal object yet it doesn't work.
//If I do this:

Animal animalBreed = eva->breed(*adam);
farm.addAnimal(animalBreed);
//It works.

为什么?

如果我farm.addAnimal(eva->breed(*adam)); 我得到了

     error: no matching function for call to 'Farm::addAnimal(Animal)'
   farm.addAnimal(eva->breed(*adam));
                                       ^

0 个答案:

没有答案