我用atlstr.h测试的
用afxstr.h的话,是因为有个宏_ATL_CSTRING_EXPLICIT_CONSTRUCTORS控制了CtringT的部分构造函数为explicit的,即CSTRING_EXPLICIT。
解决也简单,删掉MFC project wizard生成的framework.h里的这个宏定义就完事了
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
CSTRING_EXPLICIT CStringT(_In_opt_z_ const YCHAR* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager() )
{
if( !CheckImplicitLoad( pszSrc ) )
{
*this = pszSrc;
}
}
【 在 bn95 的大作中提到: 】
: 你试过没?这问题没那么简单。
: 我以前一直喜欢用char * 直接赋值给CString 变量,CString 会自动做转换,很方便。
: 比如 typeid('a').name()的返回值永远是char*类型的,以前可以直接初始化给CString 变量。
: ...................
--
修改:z16166 FROM 114.240.244.*
FROM 114.240.244.*