我需要为项目继承一个模板化的类。这就是它的样子:
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
将会很棒!
答案 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){ }
};