Wie static in Klasse benutzen?
-
Hallo Forum,
wie benutzt man static in einer Klasse? Ich brauche eine Liste in die alle Instanzen meiner Klasse etwas hineinschreiben können.
// Source von bb.h #include <list> class bb { public: static void ClearList(); private: static std::list<int> m_lstNumbers; }; // Source von bb.cpp #include "bb.h" void bb::ClearList() { m_lstNumbers.clear(); }Wenn ich das static weglasse funktioniert es. Wenn ich es hinzunehme erhalte ich:
bb.obj : error LNK2001: unresolved external symbol "private: static class std::list<int,class std::allocator<int> > bb::m_lstNumbers" (?m_lstNumbers@bb@@0V?allocator@H@std@@@std@@A)
Debug/aa.exe : fatal error LNK1120: 1 unresolved externalsVielen Dank
Borgan
-
Uh. Ich hätte zuerst im Web suchen sollen. Es hat die init gefehlt:
std::list<int> bb::m_lstNumbers;
-
Die "init" heisst "Definition" ("lege bb::m_lstNumbers mit Typ Typ std::list<int> hier an").
Das andere in der Klasse ist die "Deklaration" ("es gibt irgendwo ein Ding namens bb::m_lstNumbers mit Typ std::list<int>").