2011-11-28 145 views
1

我花了几个小时在网上搜索解决方案,但无济于事。我在Xcode中编程C++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() 
{ 
    // ... 
} 
+0

谢谢,这是它。虽然我的模板类有很多不需要专业化的功能。我想我会做一个单独的包装类。 – rwols