我有一个模板类 A 和两个 typedef A 和 A。
如何重写 A 的构造函数?以下不起作用:
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<:string> 类做其他类不做的事情。如何在不更改构造函数 A:A(int) 的情况下执行此操作?
你唯一不能做的就是使用typedef
定义构造函数。除此之外,你应该专注于A<string,20>
像这样的构造函数:
template<> A<string,20>::A(int){}
如果你想A<string,20>
有一个不同的构造函数比泛型A
,你需要专门化整个A<string,20>
class:
template<> class A<string,20> {
public:
A(const string& takethistwentytimes) { cerr << "One Type" << std::endl; }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)