PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : static in klassen


pancho
2004-07-03, 21:19:50
hi,

hab da mal ne frage bzgl. static in klassen. hier mal mein beispielprogramm:

class test
{
public:

void setze(int zahl)
{
a=zahl;
};
void anzeigen()
{
cout << a << endl;
};

void operator++(int x)
{
a++;
};

private:
static int a;
};


int main()
{
test b, c;
a.setze(5);
c.anzeigen();
return 0;
}

ist sinnfrei, dient mir nur zur übung.

beim kompilieren gibts 0 fehler und 0 warnungen;
beim linken dann:
Text1.obj : error LNK2001: Nichtaufgeloestes externes Symbol "private: static int test::a" (?a@test@@0HA)
Debug/tast.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise

habt ihr vielleicht nen tip?
eigentlich müsste ja eine schlichte 5 am bildschirm erscheinen...

ciao

Gnafoo
2004-07-03, 21:49:47
Ich kann dir zwar nicht genau sagen, warum, aber du musst a außerhalb der Klasse initialisieren. Ich denke mal, das liegt daran, dass alle Klassen eine Instanz von a teilen und diese deswegen von außen erstellt werden muss. (Man möge mich korrigieren, wenn ich falsch liege :D) Das ganze sieht dann so aus:


class test
{
...
};

// initialisierung von a
int test::a;

int main()
{
...
}


Außerdem hast du aber noch unten in main() einen kleinen Fehler. Das "a.setze(5);" sollte wahrscheinlich "b.setze(5);" heißen.

cu DerTod

Edit:
Habe noch etwas gesucht. Auf der Seite wird es unten erklärt:
http://www.cplusplus.com/doc/tutorial/tut4-2.html

pancho
2004-07-03, 22:50:31
hey cool, großes DANKE:up:
jetzt funzts