Kein Zugriff auf Unterklasse trotz friend?



  • cbk18 schrieb:

    Was heisst BTW?

    by the way



  • Hast du es schonmal mit nem Tutorial versucht?



  • Toll, dass mir keiner helfen will. Schön, wenn ihr wisst, wie es besser, es aber nicht sagt. Ich glaubte hier Hilfe zu bekommen!

    Der einzige hilfreiche Kommentar war der von dem unregistrierten!



  • *lol* Witzbold.
    Bashar schrieb doch bereits, dass es von deiner Unterklasse keine Instanz gibt, du deswegen auch nicht auf sie zugreifen kannst!
    Also:
    Instanz anlegen und über diese auf die Variablen deiner Unterklasse zugreifen.



  • Oh man... dann will ich mal versuchen zu helfen.

    1. Unter-/Oberklasse? Die total falschen Bezeichnungen. Deine Unterklasse nennt man eigentlich Innere-Klasse. Hab bei der Überschrift an was ganz anderes gedacht.

    2. Das mit dem friend ist irgendwie fehl am Platz. Normalerweise sagt man einer total fremden Klasse, welche friend ist. Das was du machen willst, mußt du anders lösen, schon allein vom Design her. Mach doch einfach die Variable j protected! Dann ist j von Oberklasse aus zugreifbar, aber von sonst keiner anderen Klasse. Das ist meiner Meinung nach die sauberste Lösung.

    3. OK, ansonst wie von den anderen gesagt eine Instanz anlegen... allerdings sollte das selbstverständlich sein und nicht nenneswert sein.



  • Okay, danke.

    Damit kann ich schon mehr anfangen!

    Das geht mit protected? Muss ich gleich mal ausprobieren!
    Ich dachte protected hat nur mit Vererbung zu tun!

    Jetzt müsste ich nur noch wissen, was er heisst eine Instanz anzulegen. Aber ich hoffe mal in den FAQs schlauer zu werden... 🙂

    Danke nachmals.



  • Ehm, heheh, shit... protected und Vererbung. Oh man, hab ich mir jetzt selbst ein Bein gestellt? Muß ich gleich ausprobieren.

    Instanzieren:

    MyClass *myCl = new MyClass(); // Instanz erzeugen
    myCl->j = 0; // über Instanz auf Variable zugreifen
    


  • Mist, musst du public machen!

    class Aussenklasse
    {
    	class Innereklasse
    	{
    	public:
    		int j;
    	};
    
    	Innereklasse ik;
    	public:
    		void j(int j)
    		{
    			ik.j = j;	// geht
    		};
    };
    
    int main(int argc, char* argv[])
    {
    	Aussenklasse ak;
    	ak.j(1);
    	ak.ik.j = 0;	// geht nicht
    	return 0;
    }
    


  • Also heisst Instanz erzeugen, ein Objekt in einer Klassendefinition erschaffen?



  • nein, Instanz und Objekt sind synonym.



  • Artchi schrieb:

    Mist, musst du public machen!

    Da hilft doch wieder friend weiter:

    class Aussenklasse 
    { 
        class Innereklasse 
        { 
            int j;
    		friend class Aussenklasse;
        }; 
    
        Innereklasse ik; 
    public: 
        void j(int j) 
        { 
            ik.j = j;
        }; 
    };
    


  • Ahhh!
    Ich glaube nun verstehe ich es. Hab wieder was dazu gelernt! Sehr gut.

    thx


Anmelden zum Antworten