如何继承模板函数?

时间:2015-02-08 20:44:00

标签: c++ templates inheritance

我需要为项目继承一个模板化的类。这就是它的样子:

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 个答案:

答案 0 :(得分:2)

LinkedList必须是包含模板参数T模板:

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

答案 1 :(得分:2)

您的类本身需要是模板本身,要么是从LinkedListInterface的专用版本派生出来的:

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

或者:

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