该类的头文件如下:
enum class My_Type {
type1,
type2
};
template <int dim>
class My_Class {
public:
My_Class() {};
template <My_Type p_type>
void
func();
}
cpp文件:
template <int dim>
template <My_Type p_type>
void
My_Class<dim>::func() {
if (p_type==My_Type::type1) {
...
} else {
...
}
....
}
电话如下:
My_Class<2> my_obj;
my_obj.template func<My_Type::type1>();
一切都很好但没有链接:
'Undefined symbols for architecture x86_64'
这是因为代码的一部分在库中。因此我需要明确地实例化。
对于班级来说这很明显:
template class My_Class<2>;
问题是,在这种情况下如何实例化模板化函数?任何技巧或变通方法?
/ p /从enum
看,如果重要的话,我使用C ++ 11。
答案 0 :(得分:0)
有趣的是,通过反复试验,我推断出了正确的语法:
template class MyClass<2>;
template void MyClass<2>::func< My_Type::type1>();
template void MyClass<2>::func< My_Type::type2>();