Как я могу получить значения перечисления Какао по имени в C ++? - PullRequest
0 голосов
/ 29 апреля 2020

Я пишу оконное приложение MacOS на чистом C ++, используя objc/objc-runtime.h в качестве эксперимента. Я могу открыть и отобразить NSWindow, однако при вызове метода initWithContentRect:styleMask:backing:defer: мне пришлось вручную вводить значения enum styleMask и backing как int с на основе документация .

Это, очевидно, не идеально, даже если значения enum не изменятся (не так ли?), Потому что мне приходится искать документацию каждый раз, когда я хочу изменить значение. Есть ли способ получить значения перечисления, такие как NSWindowStyleMask, используя библиотеку времени выполнения obj c? Или есть простой заголовок C, который я могу включить, который содержит эти определения?

Альтернативой может быть определение самого перечисления, но я бы предпочел не делать этого

Спасибо B)

1 Ответ

0 голосов
/ 30 апреля 2020

Могу помочь, это не совсем "чистый" C ++:

  1. Записать файл C ++ с расширением .mm, который является Objective-C ++. Это скомпилирует C ++ с учетом конструкций Objective- C, которые позволяют ...
  2. #include <Cocoa.Cocoa.h> получить требуемые перечисления
  3. Компилировать с Clang

Если вы попытаетесь включить Cocoa.h в .cpp файл, вы получите ошибки, как вы, вероятно, узнали.

Конечно, вы можете использовать свои функции / классы C ++ и т.д. c. определенный в .mm из .cpp, он равен C ++.

HTH

...