我可以在不使用新关键字的情况下以某种方式实现这一点吗?C++



有没有一种方法可以在不使用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还必须满足标准容器类的标准,如可复制、可分配等。并确保这些操作正确工作(例如,您需要确定是需要深度复制还是浅层复制。)

最新更新