Доброго времени суток. Подскажите пожалуйста, как мне создать копию stl контейнера, в котором находятся указатели на базовый класс
class Base
{
};
class Derived1 : public Base
{
};
class Derived2 : public Base
{
};
....................
std::vector<Base*> arr1;
arr1.push_back(new Derived1);
arr1.push_back(new Derived2);
std::vector<Base*> arr2; // Как в arr2 занести копию arr1 ???
Здравствуйте, Аноним, Вы писали:
А>Доброго времени суток. Подскажите пожалуйста, как мне создать копию stl контейнера, в котором находятся указатели на базовый класс
А>
А>std::vector<Base*> arr1;
А>arr1.push_back(new Derived1);
А>arr1.push_back(new Derived2);
А>std::vector<Base*> arr2; // Как в arr2 занести копию arr1 ???
А>
А>Доброго времени суток. Подскажите пожалуйста, как мне создать копию stl контейнера, в котором находятся указатели на базовый класс
Непонятно. Требуется глубокое копирование или обычное?
Да здравствует мыло душистое и веревка пушистая.
Re[2]: Копирование контейнера указателей
От:
Аноним
Дата:
26.06.08 14:57
Оценка:
Здравствуйте, Were, Вы писали:
W>В чем собственно проблема?
W>
W>std::vector<Base*> arr2( arr1 );
W>
В этом случае, если я не ошибаюсь, в обоих контейнерах будут указатели на одни и те же объекты в куче, а мне надо чтоб на разные
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Were, Вы писали:
W>>В чем собственно проблема?
W>>
W>>std::vector<Base*> arr2( arr1 );
W>>
А>В этом случае, если я не ошибаюсь, в обоих контейнерах будут указатели на одни и те же объекты в куче, а мне надо чтоб на разные
Паттерн прототип тогда в помощь )
class Base
{
public:
virtual Base* Clone() const
{
return new Base( *this );
}
};
class Derived1 : public Base
{
public
virtual Base* Clone() const
{
return new Derived1( *this );
}
};
class Derived2 : public Base
{
virtual Base* Clone() const
{
return new Derived2( *this );
}
};
for( std::vector<Base*>::iterator I = arr1.begin(); I != arr1.end(); I++ )
arr2.push_back( I->clone());