Wie initialisiert man eine statische Variable einer Methode?
Hallo, ich würde gerne die statische Variable zeichen mit dem Nullstring explizit initialisieren. Statische Variablen müssen außerhalb der Klasse initialisiert werden. Wie genau mache ich es bei Methoden?
char & String::operator[](int i){
static char zeichen;
if(i >= strlen(txt)||(i < 0)){
return zeichen;
}
return txt[i];
}
char String::zeichen = '\0';
1 Antwort
Eine Methode kann keine statischen Variablen definieren, das ergibt keinen Sinn. Die statische Variable muss auf Klassenebene definiert werden, dann kann man sie beliebig ansprechen und setzen, auch in nicht-statischen Methoden der Klasse.
ok, ich bin jetzt von Java ausgegangen. Bin da vermutlich betriebsblind.
Das Problem ist, dass was ich im Code geschrieben habe, nicht funktioniert
Ja und? Der Wert mit dem du sie initialisierst wird eben beim ersten aufruf zugewiesen und danach nicht mehr. Die Variable behält auch nach dem verlassen der Funktion ihren Wert und wird nicht erneut initialisiert.
Genau das ist der Sinn hinter einer statischen Variable in einer Funktion.
Beispiel:
static int counter = 0;
counter++;
Hier hätte beim ersten Aufruf die Variable den Wert 0 und wird dann erhöht auf 1. Beim nächsten aufruf hätte sie immer noch den Wert eins und würde dann auf zwei erhöht werden.
Doch, in manchen Sprachen wie etwa C++ geht das schon. Dann hast du halt eine statische Variable die innerhalb einer Function gültig ist und beim ersten Aufruf oder Programmstart initialisiert wird.
Wo das Problem vom Fragesteller ist weiß ich aber auch nicht.