template<class T>
void func1() {
T.func2();
}
如果我确定所有可能的类都具有函数func2
,我该怎么做才能使这段代码有效?
当我尝试这个时,它说
错误C2228左边的&#39; .getType&#39;必须有class / struct / union
答案 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不允许使用原始指针,可能会从我的评论中看出,只是不再推荐了......)