基本上我需要将几个常量从非托管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 ;
是否有更清洁/更短的方式,以便我不必复制我的代码两次?
答案 0 :(得分:2)
使用public enum class
关键字声明托管枚举类型。是的,这很难看,因为你无法导出本机C ++枚举。不幸的是,重复自己需要。
C ++ 11也采用了enum class
关键字,但它仍然与托管版本不同。这导致C ++ / CLI中的语法歧义,因为两种语言风格现在使用相同的关键字。编译器可以看到与accessibility关键字的区别(使用public
或private
),它对本机C ++无效。