Я использую C ++ в качестве основы приложения и Objective-C для графического интерфейса это нормально.
Но когда дело доходит до объединения этого кода в Objective-C ++ (файл .mm), у меня возникает несколько вопросов:
Могу ли я сделать следующее в заголовке Objective-C?
#include <vector>
#include <boost\shared_ptr.hpp>
@interface MyClass : NSObject {
std::vector<boost::shared_ptr<CCSprite> > m_spriteList;
}
И затем в .mm
файл, я хочу сделать
CCSprite* newSprite = [/* cocos2d stuff here... */];
m_spriteList.push_back(newSprite);
. Правильный ли приведенный выше код? Это, конечно, на C ++, но я не уверен, когда смешиваете C ++, Objective-C и Cocos2D.
Когда я пытаюсь использовать код C ++ в Objective-C, я хочу объявить объект C ++ как переменную-член в файле заголовка Objective-C.
Допустим, у меня есть класс C ++, объявленный в заголовке test.h
:
Test{
};
В заголовочном файле Objective-C я хочу сделать
#include "test.h"
#incude <boost/scoped_ptr.hpp>
#include <vector>
@interface MyClass : NSObject {
Test* m_testObjectPtr; // (1)
boost::scoped_ptr<Test> m_testOjbSmartPtr; // (2)
}
В приведенном выше коде это (2) нормально ? Могу ли я использовать интеллектуальные указатели в Objective-C так же, как в коде C ++? И могу ли я предположить, что деструктор класса Test
будет вызван при уничтожении объекта MyClass
?
Или, если (2) не подходит для Objective-C ++, то будет (1) Ладно? Нужно ли мне вручную вызывать
delete m_testObjectPtr
в dealloc
?