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.


Anmelden zum Antworten