Definition einer statischen Membervariable bei Templates



  • hi,
    also ich habe folgendes vereinfachtes Beispiel für ein Problem, das bei mir auftauchte:

    template<class T>
    class A
    {
    public:
    	static unsigned short const m_Value;
    };
    
    template<int b>
    class B : private A< B<b> >
    {
    
    };
    
    template<int b>
    unsigned short const A< B<b> >::m_Value = 1;
    

    Der Compiler bemerkt hierbei 2 Fehler in der letzten Zeile:

    error C3860: template argument list following class template name must list parameters in the order used in template parameter list
    error C3855: 'A<T>': template parameter 'T' is incompatible with the declaration

    Leider versteh ich nicht wirklich, was er mir damit sagen will. Hoffe, mir kann das jemand erklaeren und sagen, wo der Fehler liegt.

    Gruss,
    DeSoVoDaMu



  • Du musst wenn schon für die template klasse A<> die Variable initialisieren, und nicht für B

    template< class T > unsigned short const A<T>::m_Value = 1;
    


  • Danke, es geht so!

    Gruss,
    DeSoVoDaMu


Anmelden zum Antworten