我正在编写一个模板函数,它可以接受X或Y或Z等参数。它们的定义如下:
typedef MyClassA< string > X;
typedef MyClassA< float > Y;
但是classA本身是一个模板,其定义如下:
template< class T>
class MyClass
{
}
在这种情况下,我的功能签名应该是什么?
我尝试了一个简单的func(T a)
,但它失败了。
答案 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>);