scopes und Pointer Deklaration!



  • Hallo Leute,

    ich brauch einen Pointer in meiner Applikation, der in verschiedenen C files deklariert werden soll bzw. verwendet werden kann.

    Wie mach ich das?????

    einfach irgendwo ausserhalb der main und sonstiger Funktionen????

    so vielleicht irgendwie??

    extern type *name;
    

    Um etwas konkreter zu werden, ich brauch einen Pointer auf ein Widget, sodass ich dieses Widget von verschiedenen Funktionen in verschiedenen c-files bearbeiten kann. zB: buttons enablen oder ähnliches. In die Funktionen übergebe ich mir den Pointer jeweils über den Parameter, aber wie mach ich dass, dass der in jedem c-file sichtbar is?

    Beste Grüße,...



  • Wenn du den Pointer sowieso als Parameter übergibst, brauchst du ihn nicht global zu lagern - du teilst ja jeder Funktion, die ihn braucht, mit wo dein wxWidget zu finden ist 😉



  • Ja das ist mir schon klar, denke ich zumindest!! Aber damit ich den Pointer der Funktion erstmals übergeben kann muss ich ihn doch in diesem C-file erstmal sichtbar machen.

    Definieren und Deklarieren tue ich ihn in einem ganz anderern C-file, nämlich in jenem, in dem ich die ganzen Widgets aufbaue.

    ??? Bitte um Hilfe ???

    Beste Grüße



  • Klar, die Funktion, die den Pointer entgegennimmt, muß dazu auch in der Lage sein (und von der Hauptfunktion aus sichtbar) - aber dazu reicht es aus, diese Funktion in einem Header zu deklarieren:

    //Func.h
    void worker_func(wxWidget* target);
    
    //Func.cpp
    #include "Func.h"
    void worker_func(wxWidget* target)
    {
      ...//die Funktion kennt den Pointer 'target' und kann jetzt damit hantieren
    }
    
    //main.cpp
    #include "Func.h"
    int main()
    {
      wxWidget main_window;
      worker_func(&main_window);//übergibt der Funktion die Adresse des lokalen Objekts
      //das heißt, alle Zugriffe auf target->... oder *target aus der Funktion heraus
      //wirken direkt auf das Objekt 'main_window'
    }
    


  • danke, alles klar!

    Hatte unter anderem Probleme mit der Syntax!!

    Schöne Grüße


Anmelden zum Antworten