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

实现类似CString的字符串,编译器报错解决思路

2012-03-14 
实现类似CString的字符串,编译器报错对于CString ,有成员函数CString &opreator (LPCSTR)有隐式转换函数

实现类似CString的字符串,编译器报错
对于CString ,有成员函数
CString &opreator = (LPCSTR)
有隐式转换函数
opreator LPCSTR();
那么,当这样使用时
CString str1 = "ancdef";
CString str2;
str2 = str1.Left(2);
就出现两种解释,
A,LPCSTR TmpStr = str1.Left(2);
  str2 = TmpStr.LPCSTR;
B,
  str2.operator=(str2)
此时不是歧义吗?怎么能编译通过?
问题由来是我自己想实现类似CString的字符串,编译器报错

[解决办法]
赋值操作符只有在已定义对象上进行。
CString str1 = "ancdef";此时调用的并不是operator=,调用的是CString的拷贝构造函数。
[解决办法]
B,
str2.operator=(str2)
——这个没看懂,怎么用自己给自己赋值?
[解决办法]

探讨

B,
str2.operator=(str2)
——这个没看懂,怎么用自己给自己赋值?

[解决办法]
CString str2;
str2 = str1.Left(2);
-----------------
str1.Left(2);返回的是CString类型的对象,然后应该调用的CString类重载=操作符。
[解决办法]
没懂楼主的意思,哪里有歧义?

热点排行