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”错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)