Как использовать стандартный графический интерфейс Xcode поверх кода C ++ - PullRequest
0 голосов
/ 23 октября 2019

У меня есть книга, которая преподает физику для разработчиков игр. Код является общим кодом в стиле C. Однако в примерах используются GUI для взаимодействия с кодом (инициализация переменной, условия запуска и т. Д.). Код GUI не реализован и оставлен на усмотрение читателя. В идеале, дома на моем MAC, я хотел бы использовать GUI Builder в XCode для создания этих маленьких интерфейсов, а затем использовать GUI для запуска кода. Тем не менее, я не хочу кодировать физический код в Swift или Objective-C, я просто хочу кодировать его в C ++, чтобы я мог перенести код в работу (который является Windows и использует Visual Studio). Если бы кто-то мог просто указать мне направление на ресурс, который объясняет, как заставить GUI MAC вызывать код C ++ и делать все это в XCode, это было бы здорово.

Я сделал несколько поисков, но я не делаю 'Я думаю, что я использую правильную терминологию для получения правильных результатов.

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Цель C ++ - ваш ответ. Если вы называете файлы с расширением .mm, вы можете использовать функции смешивания и сопоставления C ++ с функциями Objective C. У вас будет две объектные системы, работающие рядом. Вы не можете извлечь классы C ++ из классов Objective C и наоборот, но это единственное серьезное ограничение. Код C ++ может создавать объекты ObjC и отправлять сообщения ObjC, методы ObjC могут создавать и вызывать объекты C ++.

0 голосов
/ 23 октября 2019

Это очень широко.

Общие принципы заключаются в том, чтобы иметь физический код в своем собственном наборе переносимых файлов C ++. Обычный C ++ и заголовки. Базовые структуры доступны, возможно, предоставляют std :: container, но сохраняют его универсальным.

Кроме того, используйте конструктор UI в xcode, но всегда обращайтесь только к физическому коду в написанном вами коде. Это будет выглядеть так:

nice_physics.cpp

// portable code here

nice_physics.h

class NicePhysic
{
  public:
    int nice_function(float);
};

brandname_ui.cpp

// hook generated by your IDE
UGLY_DECL_TYPE UGLY_MACRO valueChanged(UGLY_TYPE i)
{
    NicePhysic phys; // move this object to wherever the UI system you use allows it
    // make whatever calls you need to your physics system
    phys.nice_function(0.5);
}
...