ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
908
908
EMPFEHLEN
-
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 HigretGeändert von higret (25.05.05 um 14:43 Uhr)
-
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
-
Ja, aber ich dachte dazu muss man die Variable in der Klasse deklarieren und nicht in einer Methode.
-
Das heisst also auch innerhalb der Klasse wenn ihre Methode verlassen wird in der sie definiert ist... !?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.
-
25.05.05 15:10 #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
-
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
-
static Methode in einem Interface
Von gollrich im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 9Letzter Beitrag: 01.12.11, 15:50 -
non-static variable cannot be referenced from a static context
Von UGG116 im Forum Java GrundlagenAntworten: 7Letzter Beitrag: 10.06.10, 23:16 -
non-static methode mit static class aufrufen?
Von Error999 im Forum JavaAntworten: 5Letzter Beitrag: 30.09.08, 16:22 -
C++ .Net Thread ohne static methode
Von splizzer im Forum .NET ArchivAntworten: 1Letzter Beitrag: 21.03.05, 09:13 -
auf static Methode aus anderen Package zugreifen?
Von ZAntjeZ im Forum JavaAntworten: 4Letzter Beitrag: 13.08.04, 18:20





Zitieren
Login






