主题:类中运算符自定义/重载,和关于友元的问题
学校发的参考书太难看明白了~问问高手们先......[em12][em12]
这么小的问题也麻烦你们~不好意思了~谢谢拉~
今有一个链表类,有成员操作符'=',
'='在我写的Header里的声明:
friend LinkL &operator=(const LinkL &);
定义:
LinkL &LinkL::operator=(const LinkL &another)
{
*cur_another=another.head;
/////
}
编译时提示:
e:\microsoft visual studio\myprojects\newset(2)\newset\linklheader.h(21) : error C2801: “operator =”必须是非静态成员
LinkLDef.cpp
e:\microsoft visual studio\myprojects\newset(2)\newset\linklheader.h(21) : error C2801: “operator =”必须是非静态成员
e:\microsoft visual studio\myprojects\newset(2)\newset\linkldef.cpp(122) : error C2600: “LinkL::operator =”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明)
那就是说这个操作符默认已经有定义了的?教材上说'='运算符是可以定义的哇~那么应该怎么用我自己的定义而不是编译器(visual studio2005)默认的定义?
另外~*cur_another=another.head这一句,head是我定义的LinkL类的私有成员,怎样才能在成员函数里访问同一个类另一个对象的私有成员?是不是象上面那样声明为友元就可以了的?
谢谢谢谢谢谢谢谢大家拉!
这么小的问题也麻烦你们~不好意思了~谢谢拉~
今有一个链表类,有成员操作符'=',
'='在我写的Header里的声明:
friend LinkL &operator=(const LinkL &);
定义:
LinkL &LinkL::operator=(const LinkL &another)
{
*cur_another=another.head;
/////
}
编译时提示:
e:\microsoft visual studio\myprojects\newset(2)\newset\linklheader.h(21) : error C2801: “operator =”必须是非静态成员
LinkLDef.cpp
e:\microsoft visual studio\myprojects\newset(2)\newset\linklheader.h(21) : error C2801: “operator =”必须是非静态成员
e:\microsoft visual studio\myprojects\newset(2)\newset\linkldef.cpp(122) : error C2600: “LinkL::operator =”: 不能定义编译器生成的特殊成员函数(必须首先在类中声明)
那就是说这个操作符默认已经有定义了的?教材上说'='运算符是可以定义的哇~那么应该怎么用我自己的定义而不是编译器(visual studio2005)默认的定义?
另外~*cur_another=another.head这一句,head是我定义的LinkL类的私有成员,怎样才能在成员函数里访问同一个类另一个对象的私有成员?是不是象上面那样声明为友元就可以了的?
谢谢谢谢谢谢谢谢大家拉!