C++模板链表类的问题,请教了

johnshen0211 2014-08-30 10:13:45
#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

谢谢了!
...全文
129 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnshen0211 2014-08-30
  • 打赏
  • 举报
回复
template <class T> class link; template <class T> class list { } 找到了,在list类的上面添加声明就可以了!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧