Objective-C ID как void* c ++ член класса членаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Objective-C ID как void* c ++ член класса члена

Сообщение Anonymous »

Я пишу интерфейс устройства рендеринга для игрового двигателя, и в настоящее время я выясняю, как реализовать металлический бэкэнд. Мой RHI построен вокруг абстрактного класса Rhidevice , которого каждый бэкэнд наследует и реализует свои функции. Теперь, чтобы использовать металл без MetalCPP (который мне не нравится), мне обязательно нужно использовать Objective-C.
, который не является проблемой, потому что я могу скомпилировать исходный файл для бэкэнда металла в качестве объектива-C ++, но если я вставляю какие-либо типы OBJC в качестве членов класса в файл заголовка металла, теперь все другие файлы CPP, который будет включать в себя, который должен быть на самом деле, и мне не очень, что я тоже не так, как и на самом деле. Мое решение состояло в том, чтобы иметь следующий макрос внутри заголовка: < /p>

Код: Выделить всё

#ifdef __OBJC__
#include 
#include 
#define OBJC_ID(type) id
#define OBJC_PTR(type) type
#else
#define OBJC_ID(type) void*
#define OBJC_PTR(type) void*
#endif

//Inside MetalDevice class
//...
private:
OBJC_ID(MTLDevice) m_device;
//other memebers
Это, кажется, работает совершенно нормально, но я вовсе не эксперт в Objective-C, поэтому я хотел знать, будет ли этот метод вызвать проблемы в долгосрочной перспективе, возможно, с дугой или другими вещами. Экспортируйте что -то вроде mtldevice, которое будет сделано через явный аксессу и с помощью __bridge, но в целом ничто не будет подвергаться конечному пользователю.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ass-member
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»