功能模板问题

时间:2011-12-30 12:22:42

标签: c++ templates

我正在编写一个模板函数,它可以接受X或Y或Z等参数。它们的定义如下:

typedef MyClassA< string > X;
typedef MyClassA< float > Y;

但是classA本身是一个模板,其定义如下:

template< class T>
class MyClass
{

}

在这种情况下,我的功能签名应该是什么? 我尝试了一个简单的func(T a),但它失败了。

3 个答案:

答案 0 :(得分:1)

不确定这是否属于您的目标:

template< class T>
class MyClass
{

};
typedef MyClass< int > X;
typedef MyClass< float > Y;

template<class T>
void func(MyClass<T> a) {
}

答案 1 :(得分:1)

这是模板类的常用语法:

template <typename T>
class My
{
 public:
 void func(T c);
};

template <typename T>
void My<T>::func(T a)
{
 std::cout << "test\n";
}

int main()
{
  My<int> m;

  m.func(42);
}

你应该尝试使用模板函数:

template <class T>
T func(T q) {
 return (++q);
}

int res = func<int>(42);

答案 2 :(得分:0)

你的意思是一个函数会接受你的类模板的任何特化作为参数吗?这也必须是一个模板:

template <typename T> void func(MyClassA<T>);