2016-04-25 11 views
1

Die Idee ist, eine statische Member-Funktion verwenden, um den Wert eines statischen Datenelements in der gleichen Klasse erhaltenWie legt man den Wert eines statischen Datenglieds aus einer Memberfunktion fest?

template<typename K,typename U> 
class Map{ 
private: 
    static pair<K,U> default_value; 
public: 
    static void set_default(K& k,U& u){default_value=make_pair(k,u);} 
}; 

int main(){ 
    int a{8}; 
    int b{9}; 
    Map<int,int>::set_default(a,b); 
    return 0; 
} 

Hier habe ich einen Fehler zu aktualisieren: undefined reference to Map<int,int>::default_value

Antwort

3

Sie müssen zur Verfügung zu stellen Definition für Ihre default_value; außerhalb der Klasse, wie es odr-used

template<typename K,typename U> 
class Map{ 
    static pair<K,U> default_value; 
    // ... 
}; 

template <typename K, typename U> 
pair<K,U> Map<K, U>::default_value; 

Innerhalb der Klasse ist man es nur deklarieren, sondern definieren es nicht. Dies führt zu einem Linker-Fehler, wenn Sie versuchen, ihm zuzuordnen.

Verwandte Themen