Klasse B erbt von Klasse A. Klasse B soll auf x zugreifen aber nicht Main.



  • Wenn ich das mache:

    protected:
    	void funk1(void);
    

    Dann kann Ableitung auch nicht mehr drauf zugreifen.



  • blume schrieb:

    Zugriff auf var1 und var2 aus main() nicht möglich. Zugriff auf funk1() aus main() nicht möglich. Zugriff auf funk2() aus main möglich. Zugriff auf var1 und var2 aus Ableitung nicht möglich. Zugriff auf funk1() aus Ableitung möglich. Zugriff auf varx aus main nicht möglich, Zugriff auf varx aus Klasse, die von Ableitung erbt möglich. Zugriff auf funkx() aus main() möglich.

    #include <iostream>
    using namespace std;
    
    class Basis {
    private:
        int var1;
        int var2;
    protected:
        void funk1(void);
    public:
        void funk2(void);
    };
    
    class Ableitung : public Basis {
    protected:
        int varx;
    public:
        void funkx(void);
    };
    
    int main() {
        //....
    }
    

    Was hälst du denn davon?



  • blume schrieb:

    Wenn ich das mache:

    protected:
    	void funk1(void);
    

    Dann kann Ableitung auch nicht mehr drauf zugreifen.

    Doch, genau dafür ist das da.



  • out schrieb:

    Was hälst du denn davon?

    #include <iostream>
    using namespace std;
    
    class Basis {
    private:
    	int var1;
    	int var2;
    protected:
    	void funk1(void);
    public:
    	void funk2(void);
    };
    
    class Ableitung : public Basis {
    protected:
    	int varx;
    public:
    	void funkx(void);
    };
    
    class Test : public Ableitung {
    
    };
    
    int main() {
    	Ableitung a;
    	a.funk1(); // geht nicht 
    
    	Test t;
    	t.varx = 0; // geht nicht
    }
    


  • blume schrieb:

    int main() {
    	Ableitung a;
    	a.funk1(); // geht nicht 
    
    	Test t;
    	t.varx = 0; // geht nicht
    }
    

    Ähm.. Das sind beides Zugriffe von main() aus. Das soll ja auch laut Anforderung nicht gehen.



  • blume schrieb:

    out schrieb:

    Was hälst du denn davon?

    #include <iostream>
    using namespace std;
    
    class Basis {
    private:
    	int var1;
    	int var2;
    protected:
    	void funk1(void);
    public:
    	void funk2(void);
    };
    
    class Ableitung : public Basis {
    protected:
    	int varx;
    public:
    	void funkx(void);
    };
    
    class Test : public Ableitung {
    
    };
    
    int main() {
    	Ableitung a;
    	a.funk1(); // geht nicht // SO SOLL ES AUCH SEIN. ==> Zugriff auf funk1() aus main() nicht möglich.
    
    	Test t;
    	t.varx = 0; // geht nicht // SO SOLL ES AUCH SEIN. ==> Zugriff auf varx aus main nicht möglich.
    }
    

    Ich glaube du verstehst hier etwas nicht. Wenn es heißt Zugriff auf varx aus Klasse, die von Ableitung erbt möglich , dann bezieht sich das immer auf Dinge innerhalb der Klasse. Test t in deinem Beispiel ist nicht innerhalb der Klasse Ableitung. Der Satz bezieht sich auf das:

    class Test : public Ableitung {
    void wasweissich()
    {
    	Test t;
    	t.varx = 0;
    
        // oder
        varx = 0;
    }
    };
    


  • Wie greife ich dann von Ableitung auf funk1() zu?



  • Okay, jetzt habe ich es verstanden. Vielen Dank!



  • blume schrieb:

    Wie greife ich dann von Ableitung auf funk1() zu?

    Wie gesagt, es bezieht sich auf "innerhalb der Klasse". Wenn du in der main bist, bist du nicht innerhalb der Klasse.

    class Basis {
    private:
        int var1;
        int var2;
    protected:
        void funk1(void);
    public:
        void funk2(void);
    };
    
    class Ableitung : public Basis {
    protected:
        int varx;
    public:
        void funkx(void)
        {
            funk1(); // So z.B.
        }
    };
    
    class Test : public Ableitung {
    
    };
    


  • Bitte nicht

    void funk1(void);
    

    schreiben, das tut einem ja in den Augen weh. Lass das void weg.

    void funk1();
    


  • avoid void schrieb:

    Bitte nicht

    void funk1(void);
    

    schreiben, das tut einem ja in den Augen weh. Lass das void weg.

    void funk1();
    

    Das macht nicht der Schüler, sondern der Lehrer, denk ich mal.


Anmelden zum Antworten