C模板特化的构造函数

前端之家收集整理的这篇文章主要介绍了C模板特化的构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个模板化的类A< T,int>和两个typedef A< string,20>和A< string,30>.
如何覆盖A< string,20>的构造函数? ?以下不起作用:
template <typename T,int M> class A;
typedef  A<std::string,20> one_type;
typedef  A<std::string,30> second_type;


template <typename T,int M>
class A {
public:
  A(int m) {test= (m>M);}

  bool test;

};


template<>
one_type::one_type() { cerr << "One type" << endl;}

我想要A< std :: string,20>类;做一些其他课没有做的事.如何在不更改构造函数的情况下执行此操作A:A(int)?

解决方法

您唯一不能做的是使用typedef来定义构造函数.除此之外,你应该专门化A< string,20>像这样的构造函数
template<> A<string,20>::A(int){}

如果你想要A< string,20>要使用与通用A不同的构造函数,您需要专门化整个A< string,20>类:

template<> class A<string,20> {
public:
   A( const string& takethistwentytimes ) { cerr << "One Type" << std::endl; }
};

猜你在找的C&C++相关文章