Zugriff auf Methode möglich ?



  • Hallo, wie greife auf die Methode ausgabe () zu ?.

    class a
    {
       public:
    
         int mache_etwas (void)
         {
            //b::ausgabe(); // Zugriff WIE ?
            return 5;
         };
    };
    
    class b
    {
       class a neu;   //eingebettetes Objekt
    
       public:
    
           void ausgabe (void)
           {
               printf("HALLO");
               getch();
           }
    };
    


  • Du brauchst eine Referenz oder nen Zeiger von B in A.

    Warum brauchst Du das ?! Scheint ein wenig wir 😕



  • Es hat sich zufällig ergeben! (könnte man sicher auch anders lösen -> schlechte Planung)
    Aber jetzt will ich meinen Quellcode nicht mehr ändern, weil er schon etwas größer ist.

    Kann mir jemand deshalb beschreiben wie so eine Referenz funktioniert (&b) ?
    Wie übergebe ich die Adresse bzw. die Referenz andere Klasse und wie greife ich dann darauf zu ?

    Kann jemand mal ein Beispiel machen ?
    oder besser mein kleines Bespiel so ändern, dass es funktioniert !
    Danke



  • Also wenn du für die Ausführung der ausgabe Methode kein Objekt von Typ B benötigst, dann kannst du sie ja statisch machen und so aufrufen wie du es wohl ursprünglich versucht hast.

    class A
    {
       public:
    
         int mache_etwas (void)
         {
            B::ausgabe();
            return 5;
         };
    };
    
    class B
    {
       class A neu;   //eingebettetes Objekt
    
       public:
    
           static void ausgabe (void)
           {
               printf("HALLO");
               getch();
           }
    };
    

    Ansonsten musst du wohl oder übel ein Objekt vom Typ B erzeugen und ausgabe darüber aufrufen.

    class B
    {
       class A neu;   //eingebettetes Objekt
    
       public:
    
           static void ausgabe (void)
           {
               printf("HALLO");
               getch();
           }
    };
    class A
    {
       public:
    
         int mache_etwas (void)
         {
            B b;
            n.ausgabe();
    //oder
            B *b = new B();
            b->ausgabe();
    
            return 5;
         };
    };
    

    Was ich aber für merkwuerdig halte wenn du einfach nur ein Objekt erzeugst, dessen Zustand nicht wichtig zu sein scheint, einfach nur um die Methode aufzurufen.

    Gruß Entyl Sa



  • B *b = new B();
    

    wenn ich mich nich irre, endet das 100% in nem speicherleck^^


Anmelden zum Antworten