我目前正在写一点点textbase advendture游戏,我要创造一切GameObjects
集中,这样我可以使用它们的浅拷贝以后节省一些内存中创建对象。我现在做这件事的方法是创建一个额外的头文件至极一个static
实例程序终止时会比被删除。集中供以后使用
这里是什么,我现在在做一个简单的例子:
#ifndef OBJECTS_H_
#define OBJECTS_H_
#include "GameObject.h"
#include <iostream>
static GameObject *apple = new GameObject("Apple", []() { std::cout << "Delicous apple!" << std::endl; return true; });
void deleteAll()
{
delete apple;
}
#endif
main.cpp中:
#include <iostream>
#include <vector>
#include "GameObject.h"
#include "Objects.h"
using namespace std;
int main()
{
std::vector<GameObject*> objects{apple, apple};
try
{
objects[0]->use();
objects[1]->use();
}
catch (const GameObjectException &goe)
{
cout << goe.what() << endl;
}
deleteAll();
}
是否有实现这一目标的一个更优雅的方式?
@MohitJain Code Review SE需要完整的工作代码。 –
除非'GameObject'析构函数做了一些重要的事情(它可能不应该做一些重要的事!),当程序结束时没有必要删除它。它甚至可能会适得其反。我不认为游戏会在终止进程后无法清理的操作系统上运行。 –
除此之外,你已经陷入早熟优化陷阱。 –