如何从LONGLONG转换为类_variant_t?

时间:2012-05-02 05:53:52

标签: c++ windows-ce variant long-long

在此示例中,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) );

4 个答案:

答案 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数字

相关问题