我正在写一个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以便能够传递它。我怎么能这样做?
答案 0 :(得分:0)
我自己并不熟悉COM,但C ++允许从1种类型转换为另一种类型。
static_cast
将1种类型转换为另一种兼容的类型int
至double
)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)
我的错误是我创建了自己的枚举类型并希望通过自动化传递它。我通过查找服务器公开的枚举来解决问题。我的错误是写了一个相同的枚举。我想暴露的枚举已经兼容,因为它是通过服务器发起的。