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文件中!