请原谅我的英语不好......我正在开发自己的STL,我在使用模板时遇到了一些问题。 这是我的List类的主要结构:
List.h
template <class T, class N>
class List{
public:
//public methods
private:
//private methods
}
好的,现在我需要实现一个成员函数“sort”,它将对列表的元素进行排序,但在这个sort函数中我需要实现一个List对象。 我找到了一种以这种方式在不同模块中实现该功能的解决方案:
AuxiliaryFunction.h
#include<List.h>
template <class List>
void sort(Lista & l){
List A; //Works fine!
..
}
但是这样我必须通过这样做来调用sort函数:
sort(ListObject);
而不是
ListObject.sort();
如何使用List类的成员函数执行相同的操作? 如果List类是一个类似下面代码的抽象类会有什么不同呢?
template <class T, class N>
class List{
public:
typedef T ElemType;
typedef P position;
virtual void create() = 0;
virtual bool empty() = 0;
..
void merge(Lista< T, N > &, Lista< T, N > &);
...
private:
//private methods
}
可以将模板模板参数作为解决方案吗?我尝试过做这样的事情
template <class T, class N>
class List{
...
template <template <class T,class N> class List> sort(){
List A;
..
}
}
但是当我写
时出现C2783错误('无法推断出List的模板参数')ListObject.sort();
任何形式的帮助将不胜感激:)
答案 0 :(得分:0)
听起来你正在寻找这样的东西:
template <class T, class N>
class List{
...
void sort(){
List<T, N> A;
..
}
}