Witam.
Załóżmy, że mam abstrakcyjną klasę Interface, jej dziedzica Child i klasę Keeper, która ma za zadanie zarządzać jakimś zbiorem obiektów, dziedziczących po Interface (w przykładzie mam tylko Child, ale powiedzmy, że dzieci jest więcej).
W jaki sposób mogę zainicjalizować instancję Keeper, tak aby w konstruktorze podawać elementy zbioru (patrz przykład w main())?
Nasuwające się std::initializer_list odpada, z racji kopiowania elementów, którego std::unique_ptr zabrania.
class Interface;
class Child: public Interface
{
public:
Child(int i);
// ...
};
class Keeper
{
public:
Keeper(); // ???
// ...
private:
std::vector< std::unique_ptr<Interface> > storage;
};
int main()
{
Keeper keeper{ std::make_unique<Child>(1),
std::make_unique<Child>(2),
std::make_unique<Child>(3) };
}