• 1000
class Container{
public:
...
protected:
vector<BaseClass*> elements;
}
Таким образом, я могу иметь разные типы в одном векторе и вызывать методы TemplateClass, просто выполняя dynamic_cast (ej dynamic_cast<TemplateClass<int>*>(elements[i])->method(a)
(«a» будет целым числом)). Он работает (программа запускается), но меня это не убеждает, потому что, когда я уничтожаю контейнер, мне приходится явно вызывать деструктор TemplateClass, поскольку BaseClass не уничтожает данные (вектор): delete dynamic_cast<TemplateClass<int>*>(elements[i])
Я бы хотел использовать unique_pointer, но я думаю, что это не сработает, потому что он не удаляет данные (поскольку деструктор BaseClass будет вызываться вместо деструктора TemplateClass, а BaseClass не может иметь этот вектор шаблона). Есть ли альтернатива? Мне нужен этот вектор TemplateClass. Спасибо