簡體   English   中英

我可以不使用new關鍵字以某種方式實現它嗎? C ++

[英]Can I implement this somehow without using the new keyword? C++

有沒有辦法可以在不使用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還必須滿足標准容器類的標准,例如可復制構造,可分配等。並確保這些操作正常工作(例如,您需要確定是否需要深拷貝或淺拷貝。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM