+ -
当前位置:首页 → 问答吧 → 关于模板参数类型判断

关于模板参数类型判断

时间:2011-12-12

来源:互联网

设计了一个类,
template <class T>
class widget
{
  ...
  private:
  T para;
};
根据T的类型不同,有不同的实现。问题是怎么判断出T的类型,比如T是int的话,执行para++,T是double的话,执行double +=1。
可不可以使用traits实现,如果可以,具体怎么做?

作者: mm11214014   发布时间: 2011-12-12

采用模板特化template<> class widget<int>{}
template<> class widget<double>{}
模板是通用的,如果你每个类型的操作都不一样,不如不用模板,
模板参数推断是在提供了实例之后发生的,定义的时候你如果要提供类型可采用特化或者偏特化

作者: qscool1987   发布时间: 2011-12-12

当然可以了。

C/C++ code

template<class T = int>
class inc
{
public:
    static void do_inc(T& v)
    {
        v++;
    }
};

template<>
class inc<double>
{
public:
    static void do_inc(double& v)
    {
        v += 1;
    }
};



template <class T>
class widget
{
public:
    void do_inc()
    {
        inc<T>::do_inc(para);
    }
private:
    T para;
};



int _tmain(int argc, _TCHAR* argv[])
{
    widget<double> w;
    w.do_inc();
    return 0;
}


作者: healer_kx   发布时间: 2011-12-12