next up previous
 
  ZGeoObj nz2(z2);
  {  // Testen der Initialisierung/Zuweisung:
     cout << "neues ZGeoObj nz2 mit Flaeche "
          << nz2.flaeche() << endl;
     nz2 = z1;
     cout << "neues ZGeoObj nz2 jetzt mit Flaeche "
          << nz2.flaeche() << endl;

     nz2.Add(*(new Kreis(Punkt(3.0, 4.0), 10.0)));
     Kreis *pk = dynamic_cast<Kreis*>(nz2.GetGeoObj(2));
     if(pk)
       cout << "nz2[2] ist dynamischer Kreis mit Flaeche: "
            << pk->flaeche() << endl;
     cout << "Flaeche nz2 daher jetzt: " << nz2.flaeche() << endl;
     delete nz2.Remove(*pk);
     cout << "Kreis aus nz2 entfernt und geloescht. Flaeche wieder: "
          << nz2.flaeche() << endl;
  }
  {  // Testen der Downcasts:
     Dreieck *pd = dynamic_cast<Dreieck*>(nz2.GetGeoObj(1));
     if(pd)
       cout << "Downcast zu Dreieck erfolgreich." << endl;
     else
       cout << "Downcast zu Dreieck abgelehnt." << endl;

     Kreis *pk = dynamic_cast<Kreis*>(nz2.GetGeoObj(1));
     if(pk)
       cout << "Downcast zu Kreis erfolgreich." << endl;
     else
       cout << "Downcast zu Kreis abgelehnt." << endl;
  }
  {  // unendliche Rekursion:
     z1.Add(z2);
     cout << "Flaeche von z1: " << flush;
     cout << z1.flaeche() << endl;
  }
}


next up previous