verschachtelte klassen



  • hi zusammen...
    angenommen ich habe die 3 unten aufgeführten klassen, und ich habe nun ein programm das bei

    Polygon& Polygon::operator<<(Punkt Q) {
      PolygonElement *NeuesElement=new PolygonElement;
      NeuesElement->set_Punkt(Q);
      cout << "PolygonElement.P :" << NeuesElement->get_Punkt() << endl;
      ??? *NeuesElement.next=top;
      ??? top=NeuesElement;
    

    ->in der klasse polygon, eine objekt der klasse polygonelement erstellt und dafür einen punkt P einliest und nun will ich eine verkettete liste erstellen, nur wie muß die zeiger zuweisung sein? da ja alles private ist, habe es mit get und set versucht, habe es aber nicht hin bekommen...

    class Polygon {
      private:
        PolygonElement *top;
      public:
        Polygon();
        ~Polygon();
        Polygon& operator<<(Punkt Q);
        Polygon& operator>>(Punkt &Q);
        bool empty();
        int anzahl()const;
    };
    
    class PolygonElement {
      private:
        Punkt P;
        PolygonElement* next;
      public:
        PolygonElement();
        ~PolygonElement();
        void set_Punkt(Punkt NeuerPunkt); 
        Punkt get_Punkt();
        void set_Next(PolygonElement *NextZeiger); 
        PolygonElement* get_Next();
    };
    
    class Punkt {
      private:
        double x,y;		
      public:
        Punkt();
        ~Punkt();
      double get_x()const ;
        void set_x(double neuesx);
        double get_y()const ;
        void set_y(double neuesy) ;
        double winkel();
        double radius();
    };
    

    ich danke für jede hilfe!!!



  • in der klasse PolygonElement deklarierst du den operator << der klasse Polygon als friend:

    class PolygonElement
    {
      friend Polygon& Polygon::operator<<(Punkt Q);
      ..
    };
    


  • hi nochmal!
    habe in der PolygonElement

    friend class Polygon;
    

    stehen, bekomme aber die fehlermeldung
    "cannot convert 'Polygon*' to 'PolygonElement*' in assignment"
    wie convertiere ich die denn?


Anmelden zum Antworten