在下文中,我是否忘记了部分专用类NumInfo的正确语法,或者甚至可以这样做?
template<typename T>
struct NumInfo {
T x;
T y;
void Print();
};
template<typename T>
void NumInfo <T>::Print() {
/*.....*/
}
template<typename T>
struct NumInfo <float> {
T x;
float y;
void Print();
};
template<typename T>
void NumInfo <float>::Print() {
/*.....*/
}
答案 0 :(得分:3)
您的设计存在问题 - 现在您有多个具有相同名称NumInfo<float>
和不同定义(取决于T
)的类。要解决这个问题,您需要第二个模板参数,如下所示:
template<typename S, typename T=S>
struct NumInfo
{
T x;
S y;
void Print();
};
template<typename S, typename T>
void NumInfo<S,T>::Print()
{
/*.....*/
}
template<typename T>
struct NumInfo<float,T>
{
T x;
float y;
void Print();
};
template<typename T>
void NumInfo<float,T>::Print()
{
/*.....*/
}
答案 1 :(得分:0)
template<typename T>
struct NumInfo {
T x;
T y;
void Print();
};
template<typename T>
void NumInfo <T>::Print() {
/*.....*/
}
template<>
struct NumInfo <float> {
typedef float T;
T x;
float y;
void Print();
};
void NumInfo <float>::Print() {
/*.....*/
}