Я работаю над игрой cocos2dx, используя c ++. Когда я импортирую фреймворк Quartzcore в свой заголовочный файл, после сборки он дает мне более 20 ошибок, говорящих, что Point неоднозначен. ошибка возникает только тогда, когда я импортирую кварцевый файл, написав этот «#import».
Я связал фреймворк в «связь с бинарным», поэтому не должно быть проблемы со связыванием.
любая помощь приветствуется.
Благодарю.
Если вы работаете над игрой на С ++ в кокосах, вы должны быть осторожны, чтобы отделить ваш код Objective-C от вашего кода C ++.
Самый простой способ сделать это — использовать только #import в ваших файлах .mm (которые могут содержать как код C ++, так и код Objective-C), чтобы гарантировать, что вы не сможете получить директивы target-C в своей простой стороне c ++.
Тем не менее, эта ошибка не должна возникать, если вы правильно используете пространства имен в своем коде c ++: хотя среда Quartz, будучи Objective-C, определяет «точку» и т. Д. В глобальном пространстве имен, Cocos2d-x определяет ее как точку в пространстве имен cocos2d.
Таким образом, если вы поместите весь код своего приложения в пространство имен и импортируете в него пространство имен cocos, вы избежите столкновения глобального пространства имен, которое вы получаете.
Например, в моем приложении я использую пространство имен вокруг всего моего кода на C ++, примерно так:
namespace myapp {
using cocos2d;
class MyClass {
public:
Point cocosPoint;
::Point quartzPoint;
};
}
Других решений пока нет …