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?list@HV?list@HV?allocator@H@std@@@std@@A)
    Debug/aa.exe : fatal error LNK1120: 1 unresolved externals

    Vielen 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>").


Anmelden zum Antworten