是否可以用模板函数替换两个类似的成员函数?

时间:2011-12-02 01:28:41

标签: c++ class templates

例如

class A {
 public:
   void fun(Array a);
   void fun(Vector a);
   /* Most codes in these two functions are same. */
   /* Can certainly be merged into a template function if they were not member functions. */
}

请注意,我希望在A类中同时拥有这两个版本的fun()。谢谢。

3 个答案:

答案 0 :(得分:2)

即使该类本身没有模板化,您也可以编写一个成员函数,该函数的模板化方式与编写不是类方法的模板化函数的方式相同。

template <class myType >
myType func (myType a) {
 /* do something */;
}

答案 1 :(得分:0)

是的,有可能,请参阅this SO问题。

答案 2 :(得分:0)

是的,可以像普通功能一样创建模板成员函数。只需保持代码的通用性,就像它可以在涉及矢量和其他数据类型的情况下一样。

template <typename T>
void fun(T var) {}