将枚举转换为_variant_t C ++

时间:2017-02-05 08:07:55

标签: c++ enums com typeconverter

我正在写一个COM客户端。我的COM服务器中的一个函数将enum作为参数并返回一个数字(long)看起来像这样:

  

函数GetFlowsheetStatus(iQueryFlags As FlowSheetObjStatusFlag_enum)As Long   我使用早期和晚期绑定(IDispatch和直接接口)所以我写了类似的东西:FlowSheetObjStatusFlag_enum flag; _variant_t p = _variant_t(flag);

所以我需要转换enum" FlowSheetObjStatusFlag_enum"到_variant_t以便能够传递它。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我自己并不熟悉COM,但C ++允许从1种类型转换为另一种类型。

  • static_cast将1种类型转换为另一种兼容的类型
    (即intdouble
  • dynamic_cast用于将基类型转换为派生类型
  • reinterpret_cast如果您绝对需要使用 。它需要一种类型,并说“它不是这种类型,而是将其视为此。”
    (即int x = reinterpret_cast<int>(std::string{"my string hello"});
  • const_cast主要用于强制 const-ness,但也可用于给出const-ness。我想我无论如何都会在这里列出深度。

有关详情,请阅读:http://en.cppreference.com/w/cpp/language/explicit_cast

答案 1 :(得分:0)

我的错误是我创建了自己的枚举类型并希望通过自动化传递它。我通过查找服务器公开的枚举来解决问题。我的错误是写了一个相同的枚举。我想暴露的枚举已经兼容,因为它是通过服务器发起的。