Klasse in Klasse mit friend?



  • Hallo,

    ich habe wieder mal ein Anfängerproblem:

    class Chef{
       public:
          /* ... */
          class test{
             // Ich will auf Chef::var zugreifen können!
          }test;
       private:
          int var=0;
    };
    

    Wie kann ich jetzt in der Klasse test auf die private Variable var zugreifen?
    Geht das irgendwie mit friend? Wenn ja habe ich das mit friend wohl falsch gemacht, denn folgender Code geht auch nicht.

    class Chef{
       public:
          /* ... */
          friend class test{
             // Ich will auf Chef::var zugreifen können!
          }test;
       private:
          int var=0;
    };
    

    Danke für eure Hilfe!

    MfG

    Seikuassi



  • Da deine Klasse test innerhalb von Chef liegt, kann sie sowieso auf die privaten Member von Chef zugreifen. Damit du einen Member zum drauf zugreifen hast, wirst du aber auch erstmal ein Objeckt vom Typ Chef brauchen...



  • Hallo dot,

    folgendes Testprogramm:

    class Chef{
       public:
          class test{
             public:
                void func(){
                   std::cout<<var;
                   return;
                };
             private:
    
          }test;
       private:
          int var=0;
    };
    Chef neuer_Chef;
    neuer_Chef.test.func();// Fehler!
    

    Ich bekomme folgenden Fehler:

    error: invalid use of non-static data member 'Chef::var'
    error: from this location

    Liegt das am Compiler g++ oder habe ich Chef falsch angewendet?

    Danke im Voraus!

    MfG

    Seikuassi



  • dot sagte es doch schon: test braucht ein Objekt um auf dessen Variablen zuzugriefen, es wird nciht einfach das aktuelle genommen wie sonst auch.


Log in to reply