[英]Can I implement the Factory Method pattern in C++ without using new?
[英]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.