2015-02-08 114 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){ } 
};