关于C++中赋值运算符重载

为什么会出现这种错误,怎么改?头文件是template<classtype>structnodetype{typeinfo;nodetype<type>*link;};t... 为什么会出现这种错误,怎么改?
头文件是
template<class type>
struct nodetype
{
type info;
nodetype<type> *link;
};

template<class type>
class classlinkedlisttype
{
public:
const classlinkedlisttype<type>& operator=(const classlinkedlisttype<type>&);//对“=”重载

protected:
nodetype<type> *first;
nodetype<type> *last;
};
源文件是
#include<iostream>
#include"bb.h"
using namespace std;
template<class type>
const classlinkedlisttype<type>& classlinkedlisttype<type>::operator=(const linkedlisttype<type>& otherlist)
//const classlinkedlisttype<type>& operator=(const classlinkedlisttype<type>&)
{
nodetype<type> *newnode;
nodetype<type> *current;
if(this!=&otherlist)
{
if(otherlist.first==NULL)
{
first=NULL;
last=NULL;
}
else
{
current=otherlist.first;
first=new nodetype<type>;
first->info=current->info;
first->link=NULL;
last=first;
current=current->link;
while(current!=NULL)
{
newnode=new nodetype<type>;
newnode->info=current->info;
newnode->link=NULL;
last->link=newnode;
lsat=newnode;
current=current->link;
}
}
}
return *this;
}

运行出来的错误是
Compiling...
bb.cpp
D:\bb\bb.cpp(5) : error C2143: syntax error : missing ',' before '<'
D:\bb\bb.cpp(5) : error C2059: syntax error : '<'
D:\bb\bb.cpp(37) : error C2244: 'classlinkedlisttype<type>::=' : unable to resolve function overload
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
FrankHB1989
2010-07-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3122万
展开全部
类模板定义的话,把实现和声明放在一起。也就是说把函数体直接放在这条声明之后(当然声明要去掉;成为函数头)。具体函数头应该为const classlinkedlisttype& operator=(const classlinkedlisttype& otherlist)。另外LZ的实现中有一个last误写为lsat了。
ISO C++定义了在模板的声明需要使用export关键字来声明在不同文件中实现的模板。不过到目前为止,几乎没有主流编译器(包括Microsoft C++、G++)支持声明和定义分布在不同文件中的模板。所以还是老老实实地把实现放在类中好了。如果不想在类里面实现(当然,不得不把定义放在和声明的同一个头文件中)的话,除了改声明以外,定义中的函数头要写成这样:
template<class type>
const classlinkedlisttype<type>& classlinkedlisttype<type>::operator=(const classlinkedlisttype<type>& otherlist),形参里面的那个<type>也可以省略。
不过VC++6.0对模板支持得很烂,会怎么样我也不知道了。
====
[原创回答团]

参考资料: 原创+Dev-C++确认

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式