Как объявить перечисление внутри класса в машинописи? - PullRequest
0 голосов
/ 13 июня 2018

Я могу объявить enum внутри вложенного namespace.Но не может сделать это внутри class.

namespace N {
  namespace NN {
    enum { ONE };  // OK
  }
}

namespace N {
  class C {
    public enum { ONE };  // Error: ';' expected
  }
}

Каков правильный синтаксис?

1 Ответ

0 голосов
/ 13 июня 2018

Это не поддерживается напрямую, вы можете использовать объединение объявлений для достижения аналогичного эффекта, вы можете объединить пространство имен с объявлением класса:

class C {

}
namespace C {
    export enum OtherEnum { ONE };  // OK
}

C.OtherEnum.ONE // ok

Или вы можете использовать самозапускающуюся функцию, носинтаксис более уродливый:

class C {
    public static readonly MyEnum = (function() {  enum MyEnum { ONE } return MyEnum })();
}
C.MyEnum.ONE;
...