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