【发布时间】:2017-01-12 00:45:49
【问题描述】:
我正在使用 C++ 开发一个基于小型组件的游戏引擎。将各种组件添加到游戏对象对象的内部列表中,为了节省一些时间,我不制作这些组件的成员变量,只有游戏对象是成员变量,如下所示:
void Initialize()
{
MeshComponent* meshRenderer = new MeshComponent(mesh, material);
m_GameObject.AddComponent(meshRenderer);
}
meshRenderer 变量正在添加到 AddComponent() 中的组件列表中,但在此函数结束时超出范围。
稍后(在游戏的更新/绘制循环中)调用此组件并且一切正常,尽管对象在初始化期间超出了范围。
我是否理解范围有问题,这样使用是否安全,或者我应该采取其他方法(不必为每个组件创建成员变量)?
感谢您的帮助!
【问题讨论】:
-
我强烈建议使用 make_shared(共享指针)或 make_unique,或者至少了解它们,而不是“新建”和“删除”。
标签: c++ scope game-engine