...........
StrDevMode += CString (Fields[i].lpszFlag) + "|";
............
编译的时候,出现了最后一个错。对如上行,报错如下:error C2679: binary '+' : no operator found which takes a right-hand operand of type 'const char [2]' (or there is no acceptable conversion)各位帮忙看一下什么原因? 备注:
StrDevMode是CString类型, Fields结构体定义如下:
static struct {DWORD dwFlag;
LPCTSTR lpszFlag;
} Fields[] = {
ENTRY (DM_ORIENTATION),
ENTRY (DM_PAPERSIZE),
ENTRY (DM_PAPERLENGTH),
ENTRY (DM_PAPERWIDTH),
ENTRY (DM_SCALE),
ENTRY (DM_POSITION),
ENTRY (DM_NUP),
ENTRY (DM_COPIES),
ENTRY (DM_DEFAULTSOURCE),
ENTRY (DM_PRINTQUALITY),
ENTRY (DM_COLOR),
ENTRY (DM_DUPLEX),
ENTRY (DM_YRESOLUTION),
ENTRY (DM_TTOPTION),
ENTRY (DM_COLLATE),
ENTRY (DM_FORMNAME),
ENTRY (DM_LOGPIXELS),
ENTRY (DM_BITSPERPEL),
ENTRY (DM_PELSWIDTH),
ENTRY (DM_PELSHEIGHT),
ENTRY (DM_DISPLAYFLAGS),
ENTRY (DM_DISPLAYFREQUENCY),
ENTRY (DM_ICMMETHOD),
ENTRY (DM_ICMINTENT),
ENTRY (DM_MEDIATYPE),
ENTRY (DM_DITHERTYPE),
ENTRY (DM_PANNINGWIDTH),
ENTRY (DM_PANNINGHEIGHT),
{0, NULL}};
StrDevMode += CString (Fields[i].lpszFlag) + "|";
............
编译的时候,出现了最后一个错。对如上行,报错如下:error C2679: binary '+' : no operator found which takes a right-hand operand of type 'const char [2]' (or there is no acceptable conversion)各位帮忙看一下什么原因? 备注:
StrDevMode是CString类型, Fields结构体定义如下:
static struct {DWORD dwFlag;
LPCTSTR lpszFlag;
} Fields[] = {
ENTRY (DM_ORIENTATION),
ENTRY (DM_PAPERSIZE),
ENTRY (DM_PAPERLENGTH),
ENTRY (DM_PAPERWIDTH),
ENTRY (DM_SCALE),
ENTRY (DM_POSITION),
ENTRY (DM_NUP),
ENTRY (DM_COPIES),
ENTRY (DM_DEFAULTSOURCE),
ENTRY (DM_PRINTQUALITY),
ENTRY (DM_COLOR),
ENTRY (DM_DUPLEX),
ENTRY (DM_YRESOLUTION),
ENTRY (DM_TTOPTION),
ENTRY (DM_COLLATE),
ENTRY (DM_FORMNAME),
ENTRY (DM_LOGPIXELS),
ENTRY (DM_BITSPERPEL),
ENTRY (DM_PELSWIDTH),
ENTRY (DM_PELSHEIGHT),
ENTRY (DM_DISPLAYFLAGS),
ENTRY (DM_DISPLAYFREQUENCY),
ENTRY (DM_ICMMETHOD),
ENTRY (DM_ICMINTENT),
ENTRY (DM_MEDIATYPE),
ENTRY (DM_DITHERTYPE),
ENTRY (DM_PANNINGWIDTH),
ENTRY (DM_PANNINGHEIGHT),
{0, NULL}};
StrDevMode += "|";
StrDevMode += "|";
这个是对的
CStringT& operator+=( _In_ const CThisSimpleString& str )
{
CThisSimpleString::operator+=( str ); return( *this );
}
template <bool bMFCDLL>
CStringT& operator+=( _In_ const CSimpleStringT<BaseType, bMFCDLL>& str )
{
CThisSimpleString::operator+=( str ); return( *this );
}
CStringT& operator+=( _In_opt_z_ PCXSTR pszSrc )
{
CThisSimpleString::operator+=( pszSrc ); return( *this );
}
template< int t_nSize >
CStringT& operator+=( _In_ const CStaticString< XCHAR, t_nSize >& strSrc )
{
CThisSimpleString::operator+=( strSrc ); return( *this );
}
CStringT& operator+=( _In_opt_z_ PCYSTR pszSrc )
{
CStringT str( pszSrc, GetManager() ); return( operator+=( str ) );
} CStringT& operator+=( _In_ char ch )
{
CThisSimpleString::operator+=( ch ); return( *this );
} CStringT& operator+=( _In_ unsigned char ch )
{
CThisSimpleString::operator+=( ch ); return( *this );
} CStringT& operator+=( _In_ wchar_t ch )
{
CThisSimpleString::operator+=( ch ); return( *this );
} CStringT& operator+=( _In_ const VARIANT& var ); // Override from base class
IAtlStringMgr* GetManager() const throw()
{
IAtlStringMgr* pStringMgr = CThisSimpleString::GetManager();
if(pStringMgr) { return pStringMgr; } pStringMgr = StringTraits::GetDefaultManager();
return pStringMgr->Clone();
}
似乎是有某个Operator没有重载,算是CString的问题吧
CString str1="abc";
LPCTSTR lpszFlag="defg";
str1+=CString(lpszFlag) + "|"; 公式是没有问题的,可能是你的结构体参数有问题,
你先试着用一个简单的变量代替那个结构体中的参数,看看你的程序是否正确,
再找一下结构体中参数的具体情况,看下类型和赋值情况
2楼和4楼是对的
StrDevMode += "|"; That's OK