如何将常量从非托管C ++暴露给C#

时间:2011-11-07 15:43:25

标签: c++ c++-cli

基本上我需要将几个常量从非托管C ++暴露给我的C#库。以下方法有效,但我认为它有气味:

在我的非托管C ++代码中:

class Mappings
{
public:
    static const int North = 0 ;
    static const int West = 1 ;
    static const int East = 2 ;
    static const int South = 3 ;

在我的托管C ++层:

public:
    static const int North = Mappings::North ;
    static const int West = Mappings::West ;
    static const int East = Mappings::East ;
    static const int South = Mappings::South ;

是否有更清洁/更短的方式,以便我不必复制我的代码两次?

1 个答案:

答案 0 :(得分:2)

使用public enum class关键字声明托管枚举类型。是的,这很难看,因为你无法导出本机C ++枚举。不幸的是,重复自己需要。

C ++ 11也采用了enum class关键字,但它仍然与托管版本不同。这导致C ++ / CLI中的语法歧义,因为两种语言风格现在使用相同的关键字。编译器可以看到与accessibility关键字的区别(使用publicprivate),它对本机C ++无效。