2015-02-08 90 views
1

我需要繼承項目的模板化類。這是什麼樣子:如何繼承模板函數?

LinkedListInterface.h

#pragma once 
#include <string> 
using namespace std; 

template<class T> 
class LinkedListInterface 
{ 
public: 
    LinkedListInterface(void) {} 
    virtual ~LinkedListInterface(void) {} 

    virtual void insertHead(T value) = 0; 
    virtual void insertTail(T value) = 0; 
}; 

這就是他們給了我們,現在我需要做的是從繼承的類,然後再執行各種功能。我不能爲了我的生活找出適當的格式。這是我到目前爲止有:

LinkedList.h

#include "LinkedListInterface.h" 
#include "Node.h" 
using namespace std; 

class LinkedList : public LinkedListInterface<class T> 
{ 
private: 
    int listsize; 
    Node* head; 
    Node* tail; 

public: 
    LinkedList(void) {} 
    virtual ~LinkedList(void) {} 

    void insertHead(T value) {} 
    void insertTail(T value) {} 
}; 

我的問題是,它不會讓我用T,它說Incomplete type is not allowed。任何有關如何繼承這個,所以我可以使用T會很棒!

回答

2

LinkedList需求是一個類模板與模板參數T

template <typename T> 
class LinkedList : public LinkedListInterface<T> 
{ 
    .... 
}; 
2

類別需要要麼是模板本身或LinkedListInterface的專用版本獲得:

template<typename T> 
class LinkedList : public LinkedListInterface<T> 
{ 
    ... 
}; 

或者:

class LinkedList : public LinkedListInterface<int> 
{ 
    ... 
    void insertHead(int value){ } 
    void insertTail(int value){ } 
};