statische Methoden



  • @ Freak_Coder damke
    Das einzige was ich machen will ist eigentlich, das was ich in der statischen Methode ausgebe, in ein Array zu schreiben, ist das wirklich unmöglich?

    Hat jemand schon einmal was von LibSigC++ gehört?
    Könnte es damit gehen?
    Gibt es denn keine Möglichkeit?

    sollte das unbedingt hinkriegen! und benötige unbedingt HILFE

    Vielen Dank im voraus
    Gruß Tupo13



  • @ CStoll

    Sorry, haben wohl grad gleichzeitig geschrieben?

    Vielen Dank, weiß zwar noch nicht ganz genau wie du das meinst werde es mir aber sofort anschauen.

    Kannst dir garnicht vorstellen wie froh ich über einen Lösungsvorschlag bin
    -Danke



  • Super

    @CStoll - das wars was ich gesucht habe.

    Danke
    ein glücklicher Anfänger



  • Tupo13 schrieb:

    Vielen Dank, weiß zwar noch nicht ganz genau wie du das meinst werde es mir aber sofort anschauen.

    Dann etwas ausführlicher: Um nichtstatische Member-Elemente verwenden zu können, benötigst du ein konkretes Objekt. Eine "normale" Methode hat dafür "*this", bei einer statischen Methode fehlt der this-Zeiger und du mußt dir dein Objekt woanders beschaffen. (das kann eine globale Variable sein wie im ersten Beispiel, eine lokale Variable wie im zweiten Beispiel oder was auch immer - du könntest auch mit "static void func(X& myX);" ein Objekt als Parameter übergeben oder mit Hilfe der Parameter das richtige Objekt in einer std::map<irgendwas,X> suchen)



  • Noch eine Frage:

    Ich hoffe, ich blamier mich nicht:

    aber warum funktioniert das dann nicht? (in der statischen Funktion)

    initialize init;
    
    Ip_addr *destIPadr;
    destIPadr=(Ip_addr *) (init.destIP);
    
    std::cout <<destIPadr->byte1<< std::endl;
    

    Gruß Tupo13



  • @CStoll
    Leider funktioniert dein Beispiel nicht,
    wenn ich so auf Membervariable zugreife lesend oder schreibend bekomme ich immer einen unsinnigen Wert.

    Auf normale Methoden lässt er mich auch nicht zugreifen

    Mache ich etwas falsch?

    Gruß Tupo13



  • Das wurde zwar AFAIK schon mal gesagt, aber in statischen Member-Methoden arbeitest du OHNE eine Instanz von dem Objekt, d.h. die nicht statischen Member (Methoden) existieren nicht, deshalb kein Zugriff.



  • Tupo13 schrieb:

    @CStoll
    Leider funktioniert dein Beispiel nicht,
    wenn ich so auf Membervariable zugreife lesend oder schreibend bekomme ich immer einen unsinnigen Wert.

    Was meinst du mit "unsinniger Wert"?



  • @CStoll

    Also als unsinniger Wert bekomme ich
    -858993460 statt z.B. 10

    Aber so wie GPC sagt funktioniert das so sowieso nicht - oder doch?



  • Ein Beispiel:

    struct Foo {
      static void staticMethod(int);
    private:
      static int statMem;
      int nonStatMem;
    };
    
    int Foo::statMem = 0;
    
    void Foo::staticMethod(int i) {
      statMem = i;  //Geht, da statMem static ist
      //nonStatMem = i;  //Crash! nonStatMem ist nicht static!
    };
    


  • @ GPC

    OK danke, jetzt hab ichs endlich mal soweit kapiert.

    nur muss man es so schreiben

    int Foo::statMem = 0;
    

    Danke Gruß Tupo13


Anmelden zum Antworten