// .h文件
class MyWriter {public: template<typename T> voID test(const T & val) { std::cout << val << "\n"; }};
// .cpp文件
class MyType {public: MyType(int aa,double dd) : a(aa),d(dd) {} int a; double d;};class MyWriterExt : public MyWriter {public: template<> voID test(const MyType &val) { test(val.a); test(val.d); }};int main() { MyWriterExt w; w.test(10); w.test(9.999); w.test(MyType(15,0.25)); return 0;}
但是我收到一个错误:
Error 1 **error C2912**: explicit specialization; 'voID MyWriterExt::test(const MyType &)' is not a specialization of a function template \testtemplate.cpp 30
如何扩展MyWriter类以支持用户定义的类?
解决方法 应该对同一个类进行专门化,不是为了子类,也是在类体之外:class MyWriter {public: template<typename T> voID test(const T & val) { std::cout << val << "\n"; }};template<>voID MyWriter::test<MyType>(const MyType & val) { test(val.a); test(val.d);}
您不需要子类来专门化原始成员函数模板.
还要考虑overloading而不是专业化.
总结以上是内存溢出为你收集整理的如何在子类(c)中专门化模板方法?全部内容,希望文章能够帮你解决如何在子类(c)中专门化模板方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)