首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

operator<< 重载有关问题 !help me!

2012-02-26 
operator 重载问题 !!!!help me!!!errorC2679:binary :nooperatordefinedwhichtakesaright-handoperan

operator<< 重载问题 !!!!help me!!!
error   C2679:   binary   ' < < '   :   no   operator   defined   which   takesa   right-hand   operand   of   type   'const   class   CLoginInfo '   (or   there   is   no   acceptable   conversion)
      代码如下
#include   <string>
using     namespace     std;

class   CLoginInfo    
{
public:
CLoginInfo();
virtual   ~CLoginInfo();

string     UserName;
string     UserId;
friend   ostream   &   operator < <(ostream   &   out,   const   CLoginInfo   &   LoginInfo)
{
string   temp= " <Log> ";
temp+= " <UserName> ";         temp+=LoginInfo.UserName;       temp+= " </UserName> ";
temp+= " <UserId> ";           temp+=LoginInfo.UserId;           temp+= " </UserId> ";

temp+= " </Log> ";
out < <temp;
return   out;
}

};


void   CReadWrite::Save(string   file)
{
ofstream   outfile(file.c_str(),ios::binary);

vector <CLoginInfo> ::const_iterator   it;
for(it=m_LogInfo_list.begin();it!=m_LogInfo_list.end();++it)
{
outfile < <*it;
}
outfile.flush();
outfile.close();
}

[解决办法]
原则上,你贴的这段代码没有错,请贴完整代码来看看
[解决办法]
出错的代码在哪一行上?
你双击一下这个错误,看光标在哪一行,然后把那行贴上来
[解决办法]
暂时没发现问题
[解决办法]
operator < <直接就在类里面实现了,你要在类前面加一个全局声明,否则后面的调用可能看不到.
[解决办法]
黄瓜好快啊!比俺快了6秒
[解决办法]
构造函数和析构函数都只有声明,没有实现。
[解决办法]
貌似没有错

[解决办法]
friend ostream & operator < <(ostream & out, const CLoginInfo & LoginInfo)
--------------
我在网上看到好几个都是这么写的,为为什么要用 friend 呀?
[解决办法]
friend ostream & operator < <(ostream & out, const CLoginInfo & LoginInfo)
{
string temp= " <Log> ";
temp+= " <UserName> "; temp+=LoginInfo.UserName; temp+= " </UserName> ";
temp+= " <UserId> "; temp+=LoginInfo.UserId; temp+= " </UserId> ";

temp+= " </Log> ";
out < <temp;
return out;
}

既然定义为friend 函数 就不应该把定义写在 class内,放到Cpp文件中!

热点排行