c – 专门化成员函数时,“太多的template-parameter-lists”错误

c – 专门化成员函数时,“太多的template-parameter-lists”错误,第1张

概述我想在模板类中定义一些模板成员方法,如下所示: template <typename T>class CallSometing {public: void call (T tObj); // 1st template <typename A> void call (T tObj, A aObj); // 2nd template <typename A 我想在模板类中定义一些模板成员方法,如下所示:
template <typename T>class CallSometing {public:    voID call (T tObj);  // 1st     template <typename A>    voID call (T tObj,A aObj); // 2nd     template <typename A>    template <typename B>voID call (T tObj,A aObj,B bObj); // 3rd};template <typename T> voIDCallSometing<T>::call (T tObj) {    std::cout << tObj << "," << std::endl;}template <typename T>template <typename A> voIDCallSometing<T>::call (T tObj,A aObj) {    std::cout << tObj << "," << aObj << std::endl;}template <typename T>template <typename A>template <typename B> voIDCallSometing<T>::call (T tObj,B bObj) {    std::cout << tObj << "," << aObj << "," << bObj << "," << std::endl;}

但是当实例化模板类时,有三个参数的方法定义有一个错误:

CallSometing<int> caller;caller.call(12);  // OKcaller.call(12,13.0); // OKcaller.call (12,13.0,std::string("lalala!")); // NOK - complains "error: too many template-parameter-lists"

你能指出我做错了什么吗?为什么(2nd)方法可以,但是(3rd)会导致编译时错误?

解决方法 请阅读关于如何给模板多个参数的C模板教程.代替
template<typename A> template<typename B> voID f(A a,B b);

它的做法是

template<typename A,typename B> voID f(A a,B b);

多个模板子句表示多层次的模板(类模板 – >成员模板).

总结

以上是内存溢出为你收集整理的c – 专门化成员函数时,“太多的template-parameter-lists”错误全部内容,希望文章能够帮你解决c – 专门化成员函数时,“太多的template-parameter-lists”错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存