Хранение объектов в разнородном векторе с выделенными в стеке объектами
Здравствуйте,
Скажем, у меня есть абстрактный класс CA, производный от CA1, CA2 и, возможно, других.
Я хочу поместить объекты этих производных типов в вектор, который я встроил в класс CB. Чтобы правильно понять полиморфизм, мне нужно сохранить вектор указателей:
class CB
{
std::vector <CA*> v;
};
Теперь, скажем, у меня есть следующая основная функция:
int main()
{
CB b;
CA1 a1;
CA2 a2;
b.Store( a1 );
b.Store( a2 );
}
Как мне написать метод void CB::Store(const CA&)
простым способом, чтобы сохраненные объекты выживали, когда исходные объекты уничтожались (чего не происходит в простом примере выше).
Моя проблема в том, что мне нужно сначала скопировать объекты в куче, прежде чем копировать их адрес в векторе, но как я могу создать объект производного типа? Конечно, я мог бы использовать RTTI и искать все возможные типы, создавать и выделять указатель и копировать (при правильном приведении) объект в выделенное пространство, прежде чем помещать его в вектор. Но это кажется довольно сложным, нет?
Есть ли более простой способ?
(И без использования динамического выделения в основном!)