有没有一种方法可以在不使用 new
的情况下实现它?关键词?
void World::generateChunk(Coordinate coord) {
if(loadedChunks[coord])
delete loadedChunks[coord];
loadedChunks[coord] = new Chunk(coord);
loadedChunks[coord]->generate();
}
loadedChunks 是一个 std::map<Coordinate, Chunk*>
.
最佳答案
是的,通过使用:
std::map<Coordinate, Chunk>
World::generateChunk() 它们会变成:
void World::generateChunk(Coordinate coord)
{
loadedChunks[coord] = Chunk(coord);
loadedChunks[coord].generate();
}
请注意这一点的含义。由于现有对象已分配给,因此不再有析构函数调用。并且多态性不再起作用(您将无法在 loadedChunks
中存储 Chunk
子类。)此外,至少 loadedChunks.size()
对象将永远存在;它们不可删除。
Chunk
还必须满足标准容器类的标准,例如可复制构造、可分配等。并确保这些操作正常工作(例如,您需要确定是否需要深拷贝或浅拷贝。)
关于c++ - 我可以在不使用 new 关键字的情况下以某种方式实现它吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930844/