Гетерогенные списки, виртуальные функции и данные членов

У меня возникли проблемы с выяснением того, как присваивать значения данным-членам при вызове виртуальной функции через гетерогенный список.

Вот пример того, что я пытаюсь сделать:

class A
{
protected:
virtual void func1();

private:
A * list;
}

class B: public A
{
protected:
void func1();

private:
int i1, i2;
}

Внутри main ():

list = new A[10];

list[0] = new B;

list[0]->Func1();

Объявление Func1 ():

void B::Func1()
{
int a, b;

cin >> a >> b;

list[0]->i1 = a;
list[0]->i2 = b;

// or can I just do this:
// i1 = a;
// i2 = b;
}

Я ищу подходящий способ получить доступ к данным члена производного класса в функции производного класса, если вызов через указатель родительского класса из main. Любая помощь приветствуется!

0

Решение

Выполняя virtual Теперь вы должны понимать, что тип объекта — это тип класса, в котором определена функция, или класс, производный от него. То есть в вашем B::func1() функция, которую вы знаете this указывает на B объект. Объект может иметь тип, полученный изB но у вас все еще есть все B,

С другой стороны, вы не статично знать, что list[0] указывает на B объект. Код, который вы не комментировали в своем коде, не работает. Код с комментариями выглядит нормально

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]