C++模板链表类的问题,请教了
#pragma once
#include "list.h"
#include "assert.h"
//声明为友元类,需要在前面添加声明
template <class T> class list;
template <class T> class link
{
public:
//插入
link<T> * insert(T val);
private:
//构造
link(const link<T> & source);
link(T linkValue,link<T> * nextPtr);
//复制
link<T> * duplicate() const;
//数据域
T value;
link<T> * ptrToNextLink;
//友元
friend class list<T>;
};
template <class T> link<T>::link(T linkValue, link<T> *nextPtr):value(linkValue),ptrToNextLink(nextPtr)
{
}
template <class T> link<T>::link(const link<T> &source):value(source.value),ptrToNextLink(source.ptrToNextLink)
{
}
template <class T> link<T> * link<T>::insert(T val)
{
ptrToNextLink = new link<T>(val,ptrToNextLink);
assert(ptrToNextLink!=0);
return ptrToNextLink;
}
template <class T> link<T> * link<T>::duplicate() const
{
link<T> * newlink;
//还有下一个节点时递归
if(ptrToNextLink!=0)
new link<T>(value,ptrToNextLink->duplicate());
else
new link<T>(value,0);
//检查动态分配
assert(newlink!=0);
return newlink;
}
以上编译通过.
#pragma once
#include "link.h"
template <class T> class list
{
public:
protected:
//数据域
link<T> * ptrToFirstLink;
};
我在list.h中啥都没干,就定义了数据域,就出现如下错误,咋回事呢?
错误 1 error C2143: 语法错误 : 缺少“;”(在“<”的前面) c:\users\lzshen\documents\visual studio 2008\projects\applist\applist\list.h 20 appList
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\users\lzshen\documents\visual studio 2008\projects\applist\applist\list.h 20 appList
错误 3 error C2238: 意外的标记位于“;”之前 c:\users\lzshen\documents\visual studio 2008\projects\applist\applist\list.h 20 appList
谢谢了!