基本上我有一个返回某个对象的函数。假设它返回一个“动物”对象。
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));
^