2

该类的头文件如下:

 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/s/ 如您所见enum,如果重要的话,我使用 C++11。

p/p/s/ 我浏览了几个链接,但不确定我是否看到了解决方案。

4

1 回答 1

0

有趣的是,通过反复试验,我推导出了正确的语法:

template class MyClass<2>;
template void MyClass<2>::func< My_Type::type1>();
template void MyClass<2>::func< My_Type::type2>();
于 2013-06-04T12:53:58.753 回答