将枚举转换为 _variant_t C++

Convert enum to _variant_t C++

我正在编写 COM 客户端。我的 COM 服务器中的一个函数将枚举作为参数,returns 一个数字(长)看起来像这样:

Function GetFlowsheetStatus(iQueryFlags As FlowSheetObjStatusFlag_enum) As Long I'm using both early and late binding (IDispatch and direct interfaces) So I wrote something like that:FlowSheetObjStatusFlag_enum flag;_variant_t p = _variant_t(flag);

所以我需要将枚举 "FlowSheetObjStatusFlag_enum" 转换为 _variant_t 以便能够通过它。我该怎么做?

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

  • static_cast 将一种类型转换为另一种 兼容 类型
    (即 intdouble
  • dynamic_cast 用于将基类型向下转换为派生类型
  • reinterpret_cast ONLY 如果你绝对需要使用它。它需要一个类型并说 "Its not this type, instead treat it as this."
    (即 int x = reinterpret_cast<int>(std::string{"my string hello"});
  • const_cast 主要用于施放 away const-ness 但也可用于给予 const-ness。我想我还是会在这里列出它的深度。

有关更多详细信息,您应该阅读此内容:http://en.cppreference.com/w/cpp/language/explicit_cast

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