Да предположим, че има клас 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