将枚举转换为 _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
将一种类型转换为另一种 兼容 类型
(即 int
到 double
)
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
我的错误是我创建了自己的枚举类型并想通过自动化传递它。我通过找到服务器公开的枚举解决了这个问题。我的错误是为此写了一个相同的枚举。我猜公开的枚举已经兼容,因为它是通过服务器发起的。
我正在编写 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
将一种类型转换为另一种 兼容 类型
(即int
到double
)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
我的错误是我创建了自己的枚举类型并想通过自动化传递它。我通过找到服务器公开的枚举解决了这个问题。我的错误是为此写了一个相同的枚举。我猜公开的枚举已经兼容,因为它是通过服务器发起的。