【发布时间】:2014-11-05 14:59:34
【问题描述】:
我想创建一个模板类 foo,并根据 foo 的模板类型对其成员函数 test() 之一进行专门化。 M 第一次尝试是在定义 foo 的头文件中包含代码:
template<typename Type>
class foo
{
foo()
~foo()
test()
};
template<>
foo<float>::test()
{ code ... };
问题是,如果我使用这个头文件编译和链接多个文件,我会得到一个多重定义的错误。
我还尝试在标头中声明特化,以便编译器知道它不应该生成模板化代码。然后我将专门的定义放在一个单独的 C++ 文件中进行编译。然后标题看起来像:
template<typename Type>
class foo
{
foo()
~foo()
test()
};
template<>
foo<float>::test();
然后我得到一个未定义的引用错误。
我应该如何组织专用成员函数的声明和定义?
【问题讨论】: