Я не работал с производными классами и полиморфизмом через некоторое время, и я не могу понять, как получить доступ к элементу данных производного класса.Полиморфизм: доступ к элементам производного класса из массива базового класса
// Quick example
class Base {
string data1; // data1 = "FOO"
};
class ChildA : public Base {
string data2;
};
int main() {
Base **list;
list = new Base*[1];
base[0] = new ChildA(// data2 = "BAR");
std::cout << base[0]->data1; // FOO
std::cout << base[0]->data2; // Error; no member named "data2" in Base
Возможно ли получить извлеченные данные из массива базового класса?
Читайте о функциях виртуальных членов (нет полиморфизма в вашей выборке, вообще) –
привилегии доступа в классах 'private' по умолчанию. –
Вопрос о полиморфизме заключается в разработке вашей программы, чтобы вы не делали то, что делает ваш код. Дело в том, что вы не хотите заботиться о * специфике * типа *, особенно * не о том, как выглядят их внутренние данные. – Galik