关于重载加号的一个难题
本帖最后由 liuhua1982 于 2013-01-11 18:25:35 编辑 我定义了一个文本处理的类,重载了它的加号,如下:
TextNode operator+(LPCTSTR sText,const TextNode& text)
{
TextNode text2(sText);
text2.AppendText(text,-1);
return text2;
}
TextNode operator+(LPCTSTR sText)
{
TextNode text2(*this);
text2.AppendText(sText,-1);
return text2;
}
TextNode tn1,tn2,tn3;
tn1=_T("1111111");
tn2=_T("2222222")+tn1;//error C2678: 二进制“+”: 没有找到接受“const wchar_t [8]”类型的左操作数的运算符(或没有可接受的转换)
tn3=tn1+_T("jjjjjj");//这个就正常
friend CStringT operator+( _In_ const CStringT& str1, _In_ const CStringT& str2 )
{
CStringT strResult( str1.GetManager() );
Concatenate( strResult, str1, str1.GetLength(), str2, str2.GetLength() );
return( strResult );
}
friend CStringT operator+( _In_ const CStringT& str1, _In_ PCXSTR psz2 )
{
CStringT strResult( str1.GetManager() );
Concatenate( strResult, str1, str1.GetLength(), psz2, StringLength( psz2 ) );
return( strResult );
}