Как выставить константы из неуправляемого C ++ в C # - PullRequest
1 голос
/ 07 ноября 2011

В основном мне нужно выставить несколько констант из неуправляемого 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 Ответ

2 голосов
/ 07 ноября 2011

Используйте ключевые слова public enum class для объявления управляемого типа перечисления. И да, это ужасно, поскольку вы не можете экспортировать собственное перечисление C ++. К сожалению, требуется повторение.

C ++ 11 также принял ключевое слово enum class, но оно по-прежнему отличается от управляемой версии. Это вызвало неоднозначность синтаксиса в C ++ / CLI, поскольку оба языковых варианта теперь используют одни и те же ключевые слова. Компилятор может видеть отличие от ключевого слова accessibility (используйте public или private), оно недопустимо для нативного C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...