如何继承模板函数?
How to inherit Template Functions?
我需要为一个项目继承一个模板化的 class。这是它的样子:
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;
};
这就是他们给我们的,现在我需要做一个 class 继承它然后执行各种功能。我一辈子都想不出正确的格式。这是我目前所拥有的:
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
的见解都会很棒!
LinkedList
需要是具有模板参数 T
:
的 class 模板
template <typename T>
class LinkedList : public LinkedListInterface<T>
{
....
};
您的 class 本身需要是模板或派生自 LinkedListInterface 的专用版本:
template<typename T>
class LinkedList : public LinkedListInterface<T>
{
...
};
或者:
class LinkedList : public LinkedListInterface<int>
{
...
void insertHead(int value){ }
void insertTail(int value){ }
};
我需要为一个项目继承一个模板化的 class。这是它的样子:
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;
};
这就是他们给我们的,现在我需要做一个 class 继承它然后执行各种功能。我一辈子都想不出正确的格式。这是我目前所拥有的:
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
的见解都会很棒!
LinkedList
需要是具有模板参数 T
:
template <typename T>
class LinkedList : public LinkedListInterface<T>
{
....
};
您的 class 本身需要是模板或派生自 LinkedListInterface 的专用版本:
template<typename T>
class LinkedList : public LinkedListInterface<T>
{
...
};
或者:
class LinkedList : public LinkedListInterface<int>
{
...
void insertHead(int value){ }
void insertTail(int value){ }
};