运算符重载问题

kanguolaikanguolaik 2011-01-11 10:41:55
inline CString __stdcall operator+(const CString& string, char ch)
{ return string + (TCHAR)ch; }
inline CString __stdcall operator+(char ch, const CString& string)
{ return (TCHAR)ch + string; }


提示错误:
error C2666: '+' : 2 overloads have similar conversions
...全文
109 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kael_9527 2011-01-11
  • 打赏
  • 举报
回复
friend CString AFXAPI operator+(const CString& string, char ch);
friend CString AFXAPI operator+(char ch, const CString& string);
CString 类里面的,懂了
kael_9527 2011-01-11
  • 打赏
  • 举报
回复
刚用VC6试过了,不报错。。。
kael_9527 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 abc19abc91 的回复:]

return string + (TCHAR)ch;改成
return string + (CString)ch;
[/Quote]
2了,这里不用改的
立行 2011-01-11
  • 打赏
  • 举报
回复
可能是因为char能隐式转换成CString,所以会报这样的错。也可能是CString里已经实现过这样的重载。
不搞MFC已多年。
可以试试只写一个看能不能成功。
kael_9527 2011-01-11
  • 打赏
  • 举报
回复
return string + (TCHAR)ch;改成
return string + (CString)ch;
bdmh 2011-01-11
  • 打赏
  • 举报
回复
从参数上,无法区分
hai040 2011-01-11
  • 打赏
  • 举报
回复
string + (TCHAR)ch;这是调什么
感觉代码不全
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnuqinhuan 的回复:]
两个参数的类型必须相同 不然不能执行加法
[/Quote]

怎么修改????????
leetow2003 2011-01-11
  • 打赏
  • 举报
回复
两个重载是一样的
無_1024 2011-01-11
  • 打赏
  • 举报
回复
两个参数的类型必须相同 不然不能执行加法
yagemoxin 2011-01-11
  • 打赏
  • 举报
回复
string中,+时应该类型都一样。你要返回Cstring型,所以把char型的强制转换为string 型。
可以用:static_const<Cstring*>(&ch);

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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