Как сделать массив с полиморфизмом в C ++? [Дубликат]
На этот вопрос уже есть ответ здесь:
Полиморфизм и Указатели на массивы [дубликаты] 3 ответаclass Base1
{
private:
int testInput;
public:
Base1();
virtual int GetRow(void) = 0;
};
Base1::Base1()
{
testInput = 0;
}
class table : public Base1
{
private:
int row;
public:
table();
virtual int GetRow(void);
};
table::table()
{
//Contructor
row = 5;
}
int table::GetRow()
{
return row;
}
int main ()
{
Base1* pBase = new table[3];
pBase[0].GetRow();
pBase[1].GetRow(); //when i get to this line, the compiler keep saying access
// violation.
pBase[2].GetRow();
return 0;
}
Я пытаюсь создать массив из 3 таблиц класса. Требование - использовать базовый объект для этого.
Base1 * pBase = new table[3];
выглядишь хорошо для меня. Но когда я попытался получить доступ к каждой таблице, компилятор сказал:нарушение доступа. Я нене знаю, что не так с этим кодом. Я'Я использую Visual Studio 2010, хотя.