我习惯于使用 Objective-C 和 Cocos2d,所以这让我感到困惑。
我确实想将一些自定义对象保存到二维数组中,所以我正在这样做,在我想要数组的类的标题中:
public:
SomeClass *matrix[6][6];
在 init 方法中的 .cpp 中,我执行以下操作:
this->matrix[0][0] = SomeClass::create();
如果我这样做,则按此顺序调用构造函数、init 和析构函数……显然,让我感到困惑的是析构函数调用。
如果我做:
this->matrix[0][0] = new SomeClass;
SomeClass 是 CCNode 的子类。
构造函数被调用,这很好......但是因为我确实想将init方法与create一起使用,我应该怎么做?我不知道为什么使用 create 方法,它会在方法返回时立即调用析构函数。
我真的不明白 init 方法和 Create_func 发生了什么,因为我是 Cocos2d-x 的新手,这是我想更好地理解的东西。
这是我正在使用的创建函数:
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
__TYPE__ *pRet = new __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = NULL; \
return NULL; \
} \
}