2016-06-03 10 views
0

Ich möchte eine Funktion mit Default-Parameter in einer Template-Klasse überladen und ich möchte auch einen Standardparameter für das Argument haben Ist es möglich ??Überladungsfunktionen in Template-Klassen C++

Beispiel unter ::

template <typename T> struct endgame { 
    void print<T>(T a={default value}); // some thing like this should generate different functions for different typenames 

}; 

template <typename U> endgame<T>::print(U a) { 
     cout << "Some unknow type " << a << endl; 
} 

template <> endgame<T>::print<int>(int a) { 
cout << "Integer a " << a << endl; 
} 

Vielen Dank

Antwort

0

Sie können durch die Template-Klasse spezialisiert, wie unten:

template <typename T> struct endgame { 
    void print(T a ={}) { 
    cout << "Some unknow type " << a << endl; 
    } 
}; 

template <> struct endgame<int> { 
    void print(int a ={}) { 
    cout << "Integer a " << a << endl; 
    } 
}; 

Oder wenn Sie auf dem Eingabetyp print spezialisieren Sie könnten folgendes tun:

template <typename T> struct endgame { 
    template<typename U> void print(U a = {}) { 
    cout << "Some unknow type " << a << endl; 
    } 
    void print(int a = {}) { 
    cout << "Integer a " << a << endl; 
    } 
};