c – 专门化成员函数时,“太多的template-parameter-lists”错误
发布时间:2020-12-16 03:09:10 所属栏目:百科 来源:网络整理
导读:我想在模板类中定义一些模板成员方法,如下所示: template typename Tclass CallSometing {public: void call (T tObj); // 1st template typename A void call (T tObj,A aObj); // 2nd template typename A template typename Bvoid call (T tObj,A aObj,B
我想在模板类中定义一些模板成员方法,如下所示:
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> void CallSometing<T>::call (T tObj) { std::cout << tObj << "," << std::endl; } template <typename T> template <typename A> void CallSometing<T>::call (T tObj,A aObj) { std::cout << tObj << "," << aObj << std::endl; } template <typename T> template <typename A> template <typename B> void CallSometing<T>::call (T tObj,B bObj) { std::cout << tObj << "," << aObj << "," << bObj << "," << std::endl; } 但是当实例化模板类时,有三个参数的方法定义有一个错误: CallSometing<int> caller; caller.call(12); // OK caller.call(12,13.0); // OK caller.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); 多个模板子句表示多层次的模板(类模板 – >成员模板). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |