我想在C++中实现列表数据结构。C++模板接口(列表实现)
我想定义一个列表接口,这个列表接口稍后会被诸如ArrayList或LinkedList的实现继承。
我希望能够使用它像
List<int>* testList = new LinkedList<int>;
所以我一直在努力,实现完整的虚拟模板类,但后来意识到我不能混淆虚拟和模板的方法。我尝试了很多不同的方式,并一直遇到问题。
最好的办法是做什么?
编辑(有问题的代码)。我试图让界面看起来像这样:
template<typename T>
class List {
public:
virtual void add(T*) {};
virtual void remove(unsigned int) = 0;
virtual unsigned int size() = 0;
virtual void get(unsigned int) = 0;
virtual ~List();
};
,然后即时试图在这里实现它:
template<typename T>
class LinkedList : public List<T> {
/* some stuff */
public:
LinkedList();
virtual unsigned int size();
virtual void add(T*); // the problem i guess
virtual void remove(unsigned int);
virtual void get(unsigned int);
virtual ~LinkedList();
};
你不应该为此需要虚拟函数的模板,整个接口/类的模板应该足够了。你能展示给你带来麻烦的代码吗? – Angew 2015-04-02 12:56:49
请提供有问题的源代码的一部分。您不能混用虚拟方法和模板方法,但可以在模板类中使用虚拟方法。这应该满足您的需求。 – Spook 2015-04-02 12:56:53
请不要。 'std :: vector','std :: list'。不要在C++中执行Java。 – Griwes 2015-04-02 13:00:48