Или как-то в таком духе... Я лишь прошу мне подсказать, как все сделать "по науке". Скажем, захотел вызвать ф-ю output() для всех объектов. То бишь 5 массивов с объектами – вызываем для каждого.
И не спрашивайте почему=)
AtomKrieg: почему-то никому не ясно, что в массиве лишь объекты одного типа, ничего другого там и не будет. Для каждого класса иерархии, если нужно, свой массив.
Если у меня 5 классов, то будет 5 массивов (условно назовем их ABC). Есть еще один массив (шестой) – массив указателей, каждый элемент которого однозначно указывает на один из ABC.
AtomKrieg: не обязательно через void* на самом деле. Надо обрабатывать объекты так, будто там может быть любой тип иерархии классов (задействовав класс-интерфейс с его виртуальными ф-ями). Через указатель.
Армянское Радио: Пожалуйста, если Вам не трудно, напишите простенький пример, из которого будет ясно, как "правильно" используется полиморфизм относительно объектов одной иерархии.
Армянское Радио:
>объекты будут несогласны, что их суют в массив, так как типы у них у всех разные
А по какой причине не согласны?
Есть класс TypeA, есть массив, объявленный как TypeA array[3]. Что мешает хранить объекты в массиве?
Есть указатель TypeA* ptr; Я просто хочу использовать выражения:
ptr = &array[0];
ptr->output();
ptr++;
Да, то, что void* в C++ дрянь – слышал.
>Для этого существуют интерфейсы.
Так вот же он, класс-интерфейс в самом верху иерархии...
Как же тогда ко всем этим объектам правильно обратиться через указатели? Указатель на интерфейс, dynamic_cast? И далее ptr-)output(); ptr++;
Чего же я не понимаю?
Извините, если бред=)