次のようなコードがあります。
#include <memory>
#include <vector>
namespace daq
{
class Animal
{
public:
Animal(){};
};
class Pig : public Animal
{
public:
Pig() : Animal () {};
};
class Farm
{
public:
void addAnimal(Animal& animal)
{
mAnimals.push_back(std::unique_ptr<Animal>(animal)); // error
}
private:
std::vector<std::unique_ptr<Animal>> mAnimals;
};
} /* namespace daq */
しかし、Farm::addAnimal: メソッドでエラーが発生します。
「std::unique_ptr::unique_ptr(daq::Animal&)」の呼び出しに一致する関数がありません</p>
push_back メソッドには何を渡す必要がありますか?