模板类的功能

时间:2016-05-04 11:27:55

标签: c++ templates

template<class T>
void func1() {
    T.func2();
}

如果我确定所有可能的类都具有函数func2,我该怎么做才能使这段代码有效?

当我尝试这个时,它说

  

错误C2228左边的&#39; .getType&#39;必须有class / struct / union

1 个答案:

答案 0 :(得分:0)

如果func2是模板化类的静态或成员函数,则必须进行区分;静态函数通过作用域解析(::)来解决,对于成员函数,您需要一个最有可能作为参数传递的具体实例:

template <class T>
void funcS()
{
    T::staticFunc();
}

template <class T>
void funcM(T& t)  // or T* t (pre C++11) / ::std::shared_ptr<T> t (since C++11)
{
    t.memberFunc(); // or t->... if using pointer
}

(旁注:C ++ 11不允许使用原始指针,可能会从我的评论中看出,只是不再推荐了......)