tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
908
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    higret higret ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Beiträge
    74
    Hi

    Ich bin eben auf, meiner Meinung nach, ein komisches Verhalten gestoßen.

    Ich hatte in einer Methode eine Variable als Static deklariert und der Inhalt der Varialbe (QList<QPoint>) war dann auch in den anderen Objekten der Klasse vorhanden, als hätte ich die Variable direkt als statische Membervariable deklariert.

    Aber es müsste sich doch genauso wie bei ganz normalen static Variablen in Funktionen verhalten und nicht in der Klasse static sein

    mfg Higret
    Geändert von higret (25.05.05 um 14:43 Uhr)
     

  2. #2
    Nuts-S Nuts-S ist offline Rookie
    Registriert seit
    Apr 2005
    Ort
    Nähe Mainz
    Beiträge
    7
    Meines wissens, ist das die Besonderheit an static Variablen in Klassen, sie gelten immer für die gesamte Klasse.
    Wird verwendet, um z.B. die Anzahl der Instanzen zu zählen
     

  3. #3
    higret higret ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Beiträge
    74
    Ja, aber ich dachte dazu muss man die Variable in der Klasse deklarieren und nicht in einer Methode.
     

  4. #4
    thooomy thooomy ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    111
    Lokale Variablen der Speicherklasse static behalten ihren letzten Wert auch dann noch bei, wenn ihr Gültigkeitsbereich verlassen wird. Beim nächsten Eintritt in den Gültigkeitsbereich kann dann mit dem zuletzt abgespeicherten Wert weiter gearbeitet werden. Wohl gemerkt, dies betrifft nur die Erhaltung des Wertes, der Gültigkeitsbereich der Variable bleibt weiterhin auf den Block begrenzt in dem sie definiert ist.
    Das heisst also auch innerhalb der Klasse wenn ihre Methode verlassen wird in der sie definiert ist... !?
     

  5. #5
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin



    Ja, eine static-Variable gillt für die ganze Klasse und für alle Instanzen der Klasse gleich.
    Wenn du sie in einer Methode deklarierst, ist der Wert auch immernoch gleich wenn du die Methode das nächste mal aufrufst.
    Warum willst du die in einer Methode deklarieren?


    mfg
    umbrasaxum
     

  6. #6
    higret higret ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Beiträge
    74
    ich hab mir gedacht ich deklariere die Variable in der Methode static, wo sie berechnet wird (bis zu einem bestimmten Ereignis, danach wird der letzte Zustand einfach zurückgegeben)

    Hab die Variable jetzt als ganz normale Membervariable deklariert und überprüfe einfach nur, ob die neuberechnet werden muss

    aber ich glaub wir reden ein bisschen aneinander vorbei

    so hatte ich das

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    class test {
      QList<QPoint> getpoints()
      {
         static QList<QPoint> p; // diese variable ist in allen Instanzen dieseble
        
         if (berechnePoints)
           // Punkte berechnen
         else
            return p;
      }
    };
     

Ähnliche Themen

  1. static Methode in einem Interface
    Von gollrich im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 9
    Letzter Beitrag: 01.12.11, 15:50
  2. Antworten: 7
    Letzter Beitrag: 10.06.10, 23:16
  3. Antworten: 5
    Letzter Beitrag: 30.09.08, 16:22
  4. C++ .Net Thread ohne static methode
    Von splizzer im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 21.03.05, 09:13
  5. Antworten: 4
    Letzter Beitrag: 13.08.04, 18:20