Wie erstelle ich ein Array mit Polymorphismus in C ++? [Duplikat]

Diese Frage hat hier bereits eine Antwort:

Polymorphismus & Zeiger auf Arrays [duplizieren] 3 Antworten
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;
}

Ich versuche, ein Array mit 3 Tabellenklassen zu erstellen. Voraussetzung dafür ist, dass ich das Basisobjekt verwende.

Base1 * pBase = new table[3];  

siehst gut aus für mich. Als ich jedoch versuchte, auf jede Tabelle zuzugreifen, gab der Compiler an, dass es sich um eine Zugriffsverletzung handelt. Ich weiß nicht, was mit diesem Code falsch ist. Ich verwende jedoch Visual Studio 2010.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage