实现类似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)
——这个没看懂,怎么用自己给自己赋值?
[解决办法]