Cześć. Walczę z tworzeniem klasy z listą inteligentnych wskaźników. Aktualnie wyszło mi coś takiego:
class Company
{
private:
std::string name;
double budget;
std::list<std::unique_ptr<Employee>> employees;
public:
Company(std::list<std::unique_ptr<Employee>>, const std::string & = "", double = 0.0);
};
(Employee to klasa abstrakcyjna, reszta klas po niej dziedziczy)
Company::Company(std::list<std::unique_ptr<Employee>> emp_l, const std::string & n, double b)
: employees(std::move(emp_l)), name(n), budget(b)
{
}
//list of smart pointers
std::list<std::unique_ptr<Employee>> list;
list.emplace_back(new HourlyEmployee(he)); //he, se, man - obiekty zadeklarowane wcześniej
list.emplace_back(new SalariedEmployee(se));
list.emplace_back(new Manager(man));
Company SuperFirma(list, "Super firma", 5000000);
//Error C2280 attempting to reference a deleted function
Problem polega na tym, że nie wiem jak to powinno poprawnie wyglądać. Widoczne wyżej rozwiązanie jest nieprawidłowe i kompilator to wyrzuca. Pytanie brzmi: jak przesłać listę wskaźników unique_ptr do innej listy zamieszczonej w klasie?