Предположим, что существует класс A, который имеет два подкласса, Aa и Ab. Я хочу сделать массив, который может хранить указатели на объекты класса Aa и Ab. Если массив объявлен с типом класса A, допустимо ли это? Если нет, то как я могу это сделать? Например:
A *arr;
//space allocated
Ab *obj1;
arr[x] = obj1;
В связи с этим я хочу написать функцию, которая при указании местоположения будет возвращать объект, хранящийся в этом месте в массиве. Если приведенное выше работает, и у меня есть массив объектов либо Aa, либо Ab, функция может вернуть объект либо типа Aa, либо Ab. Если тип возвращаемого значения функции указан как A, суперкласс, допустимо ли это? Если нет, я просмотрел функции шаблона, но не могу найти прямого ответа о том, что тип возвращаемого значения должен быть переменным, а не параметрами. В этом примере параметр функции всегда будет int
, но он может возвращать Aa или Ab, в зависимости от того, что находится в этом месте в массиве.
A *arr[100]
или что-то в этом роде. - person Sergey Kalinichenko   schedule 24.02.2018A*
. - person eerorika   schedule 24.02.2018a[50]->DoSomething()
, вы получаете либо A::DoSomething, либо Aa::DoSomething, либо Ab::DoSomething, в зависимости от того, на какой тип A указываетa[50]
. И вам, вероятно, понадобится A, чтобы иметь деструкторvirtual ~A()
. - person Eljay   schedule 24.02.2018