c++ - 在 C++/CX 中使用 native 枚举

标签 c++ enums c++-cx

我在 C++/CX 类中有一个公共(public)函数:

using Windows::Foundation
Collections::IVectorView<IType^>^ F(Point p);

另外,我在纯原生类中有一个枚举:

namespace N
{
    enum E
    {
        kA, kB, kC
    };
}

我想创建一个也接受 E 的 F 重载:

Collections::IVectorView<IType^>^ F(Point p, N::E e);

当然,在公共(public)函数的签名中包含 native 类型是错误的。有什么方法可以将此枚举公开给我的托管调用者吗?

最佳答案

正如其他人指出的那样,解决方案是将枚举 E 声明为“公共(public)枚举类 E”。在大多数情况下,这可以被视为(并且与 native C++ 枚举一样有效),但它在 ABI 级别也是可见的和发布的,并且可由其他 WinRT 调用方调用和使用。这将被适本地投影到其他 WinRT 语言中(例如,它将被视为 C# 中的枚举)。

关于c++ - 在 C++/CX 中使用 native 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21491010/

相关文章:

c++ - 为什么我在 C++ 中收到指针数组的 "pointer being freed was not allocated"错误?

c++ - 递归模板模式;类型何时确定?

c# - 使用 Key = Enums Name 和 Value = Enums value 使用最佳技术创建键值对列表

c++ - 枚举类型作为 QML 的 C++ 类中的属性类型

windows-runtime - WiFiDirectDevice::FromIdAsync 抛出 Win32 控制台应用程序

C++/CX 属性在集合上抛出错误

c++ - 避免在 C++ 中使用 undefined object

c++ - 在 C++ 中重新排序矩阵乘法的索引

swift - 基于 Enum Swift 自动为对象赋值

casting - 从原始指针到帽子指针的reinterpret_cast 的引用计数规则是什么?