有没有人对此错误的发生方式有任何了解?我用C ++创建了一个LinkedList模板,在我的main方法中我有这个代码:
List<int> list;
list.insert(1, 9);
我在第一行收到此错误:
`List' is not a template
我收录此文件:
template <typename T>
class List
{
public:
List();
List(const List& aList);
~List();
bool isEmpty() const;
int getLength() const;
void insert(int index, const T& newItem);
void remove(int index);
void retrieve(int index, T& dataItem) const;
private:
struct ListNode
{
T item;
ListNode *next;
};
int size;
ListNode *head;
ListNode *find(int index) const;
};
由于空间原因不发布实施文件,但如果需要,我会发布个别功能。
我尝试将List(const List& aList);
更改为List(const List<T>& aList);
,但这并没有真正改变任何内容。模板语法让我感到困惑&gt;。&lt;
答案 0 :(得分:1)
您确定您的List模板类不在不同的命名空间中吗?
您是否尝试将模板类重命名为独特的类,以确保您实例化您认为的类?
答案 1 :(得分:0)
在我的项目中,我声明这样的列表以避免出现错误
using namespace std;
#include <list>
答案 2 :(得分:-2)
您是否有可能在.cpp文件中编写模板代码?
我要走这条路:
Not posting the implementation file
模板代码只能在.h文件中,不能有“实现文件” 原因很复杂,因为它们很愚蠢:)