2016-06-03 6 views
0

템플릿 클래스에 기본 매개 변수가있는 함수를 오버로드하고 싶습니다. 또한 인수에 대한 기본 매개 변수를 갖고 싶습니다. 가능합니까 ??템플릿 클래스의 오버로드 함수 C++

예 아래 ::

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; 
} 

는 아래의 템플릿 클래스를 전문으로 당신에게

답변

0

당신이 할 수있는 감사 :

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; 
    } 
}; 

을 또는 당신은 print의 입력 종류에 전문하려는 경우 다음을 수행 할 수 있습니다.

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; 
    } 
};