如何在类中创build模板函数? (C ++)

我知道可以做一个模板函数:

template<typename T> void DoSomeThing(T x){} 

可以创build一个模板类:

 template<typename T> class Object { public: int x; }; 

但是有可能使一个类不在一个模板中,然后在该类中创build一个函数模板? 即:

 //I have no idea if this is right, this is just how I think it would look class Object { public: template<class T> void DoX(){} }; 

或者某种程度上,类不是一个模板的一部分,但function是?

你的猜测是正确的。 唯一要记住的是成员函数模板定义 (除了声明之外)应该在头文件中,而不是在cpp中,尽pipe它不必在类声明本身中。

请参阅此处: 模板 , 模板方法 ,成员模板,成员函数模板

 class Vector { int array[3]; template <class TVECTOR2> void eqAdd(TVECTOR2 v2); }; template <class TVECTOR2> void Vector::eqAdd(TVECTOR2 a2) { for (int i(0); i < 3; ++i) array[i] += a2[i]; } 

是的,模板成员函数在许多场合是完全合法的和有用的。

唯一需要注意的是模板成员函数不能是虚拟的。