ну вот есть класс А, В и С от него производные. в классе А есть виртуальный метод, определяемый в В и С. Мне нужно чтобы мне в массив влезали и В и С, но одинаковым вызовом метода выполнялись соответствующие определенные в производных
ну вот есть класс А, В и С от него производные. в классе А есть виртуальный метод, определяемый в В и С. Мне нужно чтобы мне в массив влезали и В и С, но одинаковым вызовом метода выполнялись соответствующие определенные в производных
@supapro, но ответ тут уже дали, нужно хранить указатели на A
Добрый вечер. Как создать массив объектов классов, производных от одного класса, чтобы потом можно было вызывать переопределенные методы при перечислении массива?
если хочется оптимальности, то можно создать тонкую обертку над std::variant<A,B,C> и в контейнере уже хранить ее
Ещё раз, меня беспокоит наследие старых говен мамонта, я не спрашиваю как с ними работать :) что такое SEH/VEH я знаю тоже, и про ветвление траями-кетчами тоже не надо
У тебя размер типа с вариантом будет приблизительно равен самому большому из типов, это же обычный юнион с наворотами. Навороты не сильно большой оверхед накладывают. Но классы могут быть любыми А если там один из классов содержит много полей большого размера? На 10 элементов массива этого будет незаметно, на тысячах может быть уже существенно
У тебя размер типа с вариантом будет приблизительно равен самому большому из типов, это же обычный юнион с наворотами. Навороты не сильно большой оверхед накладывают. Но классы могут быть любыми А если там один из классов содержит много полей большого размера? На 10 элементов массива этого будет незаметно, на тысячах может быть уже существенно
ах ну да, я под оптимальностью имел в виду процессорное время, а не память