模板类的函数

Functions of the template classes

本文关键字:函数      更新时间:2023-10-16
template<class T>
void func1() {
    T.func2();
}

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

当我尝试这个时,它说

".getType"左侧的错误 C2228 必须具有类/结构/联合

如果 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 不允许使用原始指针,正如我的评论中可能出现的那样,只是不再推荐......