在此示例中,m_Amount是CString。 stringToNumber函数成功将其转换为LONGLONG数字。但是当我想将它分配给变体时,我得到了这个错误:
error C2440: 'type cast' : cannot convert from '__int64' to 'class _variant_t'
mycode的
_variant_t myVar = _variant_t( (LONGLONG)stringToNumber(m_Amount) );
答案 0 :(得分:1)
你不需要演员。
使用:
_variant_t(
__int64 i8Src
)
有关详细信息,请参阅_variant_t
MSDN。
Windows CE但不提供常规Windows XP / Vista / Win 7安装中可用的所有数据类型。在您的情况下,这意味着WinCE不支持64位有符号/无符号整数。因此,建议您使用较窄的数据类型或使用自己的类型(可能使用两个int
)来获取LONGLONG
。
答案 1 :(得分:0)
您使用的是什么工具链?
如果__int64
应该从_variant_t
转换为_WIN32_WINNT >= 0x501
,这对应于至少WinXP的目标。对于最新的Windows工具链,情况应该如此,但您可能需要使用一些较旧的工具(如VS 2005,我相信)自己明确设置宏定义。
答案 2 :(得分:0)
试试这个:
union UltimateCast
{
__int64 From;
__variant_t To;
};
将您需要的__int64值放入From字段。之后,从“收件人”字段中读取结果值。
答案 3 :(得分:0)
我使用_variant_t将LONGLONG数据插入SQL Server数据库。如this asnwer中所述,numeric在C ++中映射到CString。所以我从数据库中检索我的数字数据作为字符串,将其转换为LONGLONG,更改然后再将其转换为字符串并将结果字符串存储到数据库。
SQL数字 - (从数据库中检索) - > string - > LONGLONG - > string - (插入数据库) - > SQL数字