我创建了一个自定义图层,我希望将两个变量传递给该图层。我应该在构造函数或Tlayer
函数中初始化Hlayer
和init()
吗?我检查了一些材料,大多数说我们应该避免使用构造函数。为什么?
TouchLayer* TouchLayer::create(TcharacterLayer* t,HcharacterLayer* h){
TouchLayer* pRet = new TouchLayer();
if (pRet && pRet->init())
{
pRet->autorelease();
return pRet;
}else
{
delete pRet;
pRet = NULL;
return NULL;
}
}
class TouchLayer : public CCLayerColor
{
public:
TouchLayer();
~TouchLayer();
virtual bool init();
virtual void onEnter();
virtual void onExit();
CREATE_FUNC(TouchLayer);
static TouchLayer* create(TcharacterLayer* t,HcharacterLayer* h);
TcharacterLayer* Tlayer;
HcharacterLayer* Hlayer;
};
答案 0 :(得分:1)
我认为你可以得到一些关于&#34的相关信息;为什么我们应该使用init()方法而不是构造函数"在这里:https://stackoverflow.com/a/20280664/3090526
答案 1 :(得分:0)
但是如果你有多个构造函数,那么我认为你应该在init()
函数中初始化你的类成员,因为如果不是你必须在每个构造函数中初始化你的类成员而你可能会错过一些成员。
如果您使用现代编译器,则可以使用Delegating constructors
而不需要编写init()
函数。
答案 2 :(得分:0)
您应该在静态TouchLayer* pRet = new TouchLayer();
方法中的行create
之后分配这些变量。例如:
pRet->Tlayer = t;
pRet->Hlayer = h;