2015-10-19 1 views
0

я следующий код в файле .mm:Как написать код NSWindow Cocoa в синтаксисе C++?

NSRect mainDisplayRect;// = [[NSScreen mainScreen] frame]; 
    mainDisplayRect.origin.x = x; 
    mainDisplayRect.origin.y = y; 
    mainDisplayRect.size.width = width; 
    mainDisplayRect.size.height = height; 
    NSWindow *fullScreenWindow = [[NSWindow alloc] initWithContentRect: mainDisplayRect styleMask: NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]; 

Может кто-то пожалуйста, помогите, особенно о том, как инициализировать fullScreenWindow указатель в соответствии с C++ синтаксис, просто нужно преобразование в синтаксисе C++. Или это будет успешно скомпилировано даже с C++-компилятором (т. Е. Когда написано так, как в файле .cpp, без каких-либо изменений). Я не очень разбираюсь в синтаксисе кода Object-C. Пожалуйста помоги.

ответ

1

Вы не можете перевести это на C++. Структура Cocoa не имеет привязки к C++.

Вы можете использовать Objective-C++, который является надмножеством C++. Таким образом, код, который вы показали, будет компилироваться просто как Objective-C++. Вы можете использовать расширение файла .mm или указать язык с использованием параметров командной строки при вызове компилятора. Но это не то, что вы просили.

Теоретически вы можете разложить код Objective-C на вызовы библиотеки времени выполнения Objective-C (например, objc_msgSend() и т. Д.), Но это было бы ужасно и почти наверняка не то, что вы хотите.

+0

Спасибо за ответ :) – user2181750

+0

Не могли бы вы также рассказать, является ли приведенный выше код объективным-C или объектно-C++? – user2181750

+0

Код фактически обе. Он работает на обоих языках. Objective-C состоит из некоторых дополнений к C. Objective-C++ состоит из тех же дополнений к C++. В коде, который вы указали, есть элементы, которые отлично работают на C или C++, например объявление 'mainDisplayRect' как переменной типа' NSRect', которая представляет собой typedef структуры и настройки ее полей. Строка, которая объявляет и инициализирует 'fullScreenWindow', использует дополнения Objective-C (++), которые одинаковы на любом языке. –

Смежные вопросы