我花了几个小时在网上搜索解决方案,但无济于事。我正在用Xcode编写C ++
#import "data.h" // contains a struct called data
template <class T>
class container {
public:
container();
~container();
private:
// functionality for containing T
};
template <class T>
container<T>::container() { /* generic */ }
template <class T>
container<T>::~container() { /* generic */ }
template <>
container<data>::container() { /* template specialization of data */ }
编译器抱怨:重复符号并指出类模板特化。我想也许是因为构造不能专业化,所以我尝试了添加额外的void函数的方法
template <class T>
class container {
public:
container();
~container();
void setup();
private:
// functionality for containing T
};
template <>
void container<data>::setup() { /* template specialization of data */ }
但是这给了我相同的编译器错误。我现在还不知道在哪里寻找解决方案......
答案 0 :(得分:1)
当您专门化类模板时,您必须专门化所有成员函数。
除了设置之外,您还需要专门构造构造函数/析构函数。
template <>
container<data>::container()
{
// ...
}
template <>
container<data>::~container()
{
// ...
}