2

在本例中,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) );
4

4 回答 4

1

你不需要演员表。

采用:

_variant_t(
   __int64 i8Src
)

请参阅_variant_tMSDN 以获取更多参考。

但是,Windows CE 并未提供常规 Windows XP/Vista/Win 7 安装中可用的所有数据类型。在您的情况下,这意味着 WinCE 不支持 64 位有符号/无符号整数。因此,最好建议您使用更窄的数据类型或滚动您自己的类型(可能使用两个ints)来获得LONGLONG.

于 2012-05-02T05:58:14.077 回答
0

你用的是什么工具链?

应该有从__int64_variant_tif的转换_WIN32_WINNT >= 0x501,这对应于至少 WinXP 的目标。这对于最新的 Windows 工具链应该是正确的,但您可能需要使用一些较旧的工具(如 VS 2005,我相信)自己明确设置宏定义。

于 2012-05-02T06:10:39.920 回答
0

试试这个:

union UltimateCast
{
   __int64 From;
   __variant_t To;
};

将需要转换的 __int64 值放入 From 字段中。之后从 To 字段读取结果值。

于 2012-05-02T07:01:40.987 回答
0

我正在使用 _variant_t 将 LONGLONG 数据插入 SQL 服务器数据库。正如这个asnwer中提到的,数字被映射到C++中的CString。所以我从数据库中检索我的数字数据作为字符串,将其转换为 LONGLONG,更改然后再次将其转换为字符串并将结果字符串存储到数据库。

SQL numeric --(retrieve from database)--> string -> LONGLONG -> string --(insert into the database)--> SQL numeric

于 2012-05-02T10:15:29.383 回答