我想在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