请教各位大侠关于重载basic_ofstream的<<操作符的问题

libing8384 2008-08-07 12:34:39
在VS2005下重载basic_ofstream的<<操作符时遇到一个问题。
struct Surface
{
Surface(const TCHAR* name) : m_Name(name)
{
}

double a;
double b;
double c;
double d;
const TCHAR* m_Name;
};

在对Surface重载basic_ofstream的<<操作符:

basic_ofstream<TCHAR>& operator << (basic_ofstream<TCHAR>& os, const Surface& s)
{
os<<s.m_Name<<endl;
os<<s.a<<" "<<s.b<<" "<<s.c<<" "<<s.d<<endl;
return os;
}
编译时总是提示os<<s.m_Name<<endl;这一句出错,原因为operator << : 4 overloads have similar conversions。
请各位高手帮忙看一下,到底错在哪里?
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xkyx_cn 2008-08-07
  • 打赏
  • 举报
回复
用这个吧:

ostream& operator<< (ostream& os, const Surface& s)
{
os << s.m_Name <<endl;
os << s.a <<" " <<s.b <<" " <<s.c <<" " <<s.d <<endl;
return os;
}

怎么用上TCHAR了
libing8384 2008-08-07
  • 打赏
  • 举报
回复
多谢2楼的提醒,其实你说的这个方法我已经试验成功了,但是当时没想到ofstream是ostream的之类,可以继承这个操作符,多谢多谢!
lzr4304061988012 2008-08-07
  • 打赏
  • 举报
回复
是为了支持UNICODE?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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