Sichtbarkeiten
-
Ich habe ein Problem mit der Sichtbarkeit.
class Punkt{ private: int x; int y; public: Punkt(int x=0, int y=0); virtual ~Punkt(); int getX(); int getY(); void ausgeben(); void verschieben(int dx, int dy); };class Rechteck { protected: Punkt linksOben; Punkt rechtsUnten; public: virtual void verschieben(int dx,int dy); virtual void ausgeben(); virtual bool innerhalb(Punkt p); virtual int flaeche(); Rechteck(Punkt linksOben=Punkt(0,0),Punkt rechtsunten=Punkt(0,0)); virtual ~Rechteck(); };class Rahmen: public Rechteck{ private: //Punkt linksOben; //Punkt rechtsUnten; Rechteck innen; public: virtual void verschieben(int dx,int dy); virtual void ausgeben(); virtual bool innerhalb(Punkt p); virtual void innenVerschieben(int dx,int dy); virtual int flaeche(); Rahmen(Punkt lo=Punkt(0,0),Punkt ru=Punkt(0,0),Rechteck innen=Rechteck(Punkt(0,0),Punkt(0,0))); virtual ~Rahmen(); };Ich habe alles richtig eingebunden wenn ich jetzt aber Rahmen implementieren will
bekomme ich eine Fehlermeldung in der Methode:bool Rahmen::innerhalb(Punkt p){ if(p.getX()>=this->innen.linksOben.getX() && p.getX()<=this->innen.rechtsUnten.getX()&& p.getY()<=this->innen.linksOben.getY() && p.getY()>=this->innen.rechtsUnten.getY())return true; else return false; }error: within this context
error:Punkt Rechteck::linksOben' is protected error:Punkt Rechteck::rechtsunten' is protected
Was stimmt da nicht?
-
In der Klasse Rechteck sind die Variablen protected, also kannst du bei der Instanz innen nicht direkt drauf zugreifen, sondern musst dir dafür eine Funktion programmieren.
mfg.
-
Ja schon aber Rahmen erbt ja von Rechteck also müsste ich doch darauf zugreifen können
-
blizzarac schrieb:
Ja schon aber Rahmen erbt ja von Rechteck also müsste ich doch darauf zugreifen können
Beachte: Du hast zusätzlich, zum erben, noch eine Instanz, die hat damit nichts zutun. Auf die Variablen die du erbst kannst du auch zugreifen, aber nicht auf die mit "innen.var".
mfg.