在C /CX中使用本机枚举

Using native enums in C++/CX

本文关键字:本机 枚举 CX      更新时间:2023-10-16

我在C /CX类中具有公共功能:

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

分别在一个纯粹的本地类中有一个枚举:

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

我想创建一个f的超载,也接受e:

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

当然,在公共功能的签名中包含本地类型是错误的。有什么方法可以将此枚举暴露给我的托管呼叫者?

正如其他人指出的那样,解决方案是将枚举e声明为'公共枚举类E'。在大多数情况下,这可以对待(并且可以像)本机C 枚举一样效率,但是在ABI级别上也可见和发布,并且可以由其他WinRT呼叫者呼唤和使用。这将适当地投影到其他WinRT语言中(例如,它将被视为C#中的枚举)。