6
模板化类中单个方法的模板专业化
始终考虑到至少包含两个.CPP文件的文件包含以下包含我的模板化类的标头,因此此代码可以正确编译: template <class T> class TClass { public: void doSomething(std::vector<T> * v); }; template <class T> void TClass<T>::doSomething(std::vector<T> * v) { // Do something with a vector of a generic T } template <> inline void TClass<int>::doSomething(std::vector<int> * v) { // Do something with a vector of int's } 但是请注意专业化方法中的内联。由于该方法要定义一次以上,因此必须避免链接器错误(在VS2008中为LNK2005)。我了解这一点是因为AFAIK的完整模板专业化与简单方法定义相同。 …