Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Szablon klasy ze statycznymi składowymi - undefined reference

Ostatnio zmodyfikowano 2011-06-30 19:22
Autor Wiadomość
pekfos
Temat założony przez niniejszego użytkownika
Szablon klasy ze statycznymi składowymi - undefined reference
» 2011-06-30 18:29:04
mam problem i taki kod:
C/C++
#include <set>

template < class T >
class DE {
    static std::set < long > valset;
public:
    static void ext( long v ) {
        valset.insert( v );
    }
};

class ME
    : public DE < int >
{ };

int main() {
    ME::ext( 2 );
    //..
}

i taki błąd:
obj\Debug\main.o: In function `ZNSt3setIlSt4lessIlESaIlEE6insertERKl':
c:/mingw32/bin/../lib/gcc/mingw32/4.5.0/include/c++/bits/stl_set.h:408: undefined reference to `DE<int>::valset'

siedzę nad tym i siedzę i nic nie mogę wymyślić. jedyne co mi zadziałało to usunięcie atrybutów static ale nie mogę tego zrobić bo te pola muszą być static.
kiedyś spotkałem się z takim działającym rozwiązaniem, tylko nie pamiętam dokładnie gdzie..
P-35048
ison
» 2011-06-30 18:58:55
C/C++
#include <set>

template < class T >
class DE {
public:
    static std::set < long > valset;
    static void ext( long v ) {
        valset.insert( v );
    }
};

template < class T > std::set < long > DE < T >::valset;

class ME
    : public DE < int >
{ };

int main() {
    ME::ext( 2 );
    //..
}
//edit
valset nie musi być public, zrobiłem tak tylko jak testowałem i potem zapomniałem zmienić :)
pozdrawiam
P-35050
pekfos
Temat założony przez niniejszego użytkownika
» 2011-06-30 19:22:22
dzięki, działa. co za głupi błąd :P zamykam.
P-35051
« 1 »
  Strona 1 z 1