有没有一种方法可以在不使用new
关键字的情况下实现这一点?
void World::generateChunk(Coordinate coord) {
if(loadedChunks[coord])
delete loadedChunks[coord];
loadedChunks[coord] = new Chunk(coord);
loadedChunks[coord]->generate();
}
loadedChunks是CCD_ 2。
是,使用:
std::map<Coordinate, Chunk>
世界::generateChunk()会变成:吗
void World::generateChunk(Coordinate coord)
{
loadedChunks[coord] = Chunk(coord);
loadedChunks[coord].generate();
}
请注意这一点的含义。由于已存在的对象被分配给,因此不再有析构函数调用。多态性也不再起作用(您将无法在loadedChunks
中存储Chunk
子类。)此外,至少loadedChunks.size()
对象将始终存在;它们是不可删除的。
Chunk
还必须满足标准容器类的标准,如可复制、可分配等。并确保这些操作正确工作(例如,您需要确定是需要深度复制还是浅层复制。)