我在鏈表中存儲指向類Cell
的所有實例的指針。 std::list<Cell*> cells
存儲在名爲Game
的類中。方法Game::update()
迭代完成列表cells
中保存的所有Cell
實例,並調用每個單元的方法Cell::update()
。如果Cell::update()
方法在某個點發現該單元已準備好分割,則需要push_back()
指向新單元的指針到cells
,以便新單元可更新。 但是,如何才能在cell
內參考Game::cells
才能做到這一點?我曾考慮以下選項:C++:管理一組對象,以便持有的對象可以訪問持有它們的數據結構
- 在全球範圍內定義
std::list<Cell*> cells
代替。- 令人作嘔,使得它不可能有一個以上的
Game
- 令人作嘔,使得它不可能有一個以上的
- 製作
std::list<Cell*> cells
的Cell
- 比全局變量更好的靜態成員,但仍避免使用多個
Game
實例
- 比全局變量更好的靜態成員,但仍避免使用多個
- 將對當前遊戲的
Game::cells
的引用作爲參數傳遞給Cell的構造函數,並隨後存儲臨時副本在新建成的小區實例- 我認爲這是一個有點僵硬
- 傳遞到當前遊戲的
Game::cells
的引用作爲參數傳遞給Cell::update()
方法T參考
是否有更優雅解決方案利用?
剛剛從'Cell :: update()'返回需要的東西,然後讓'Game'將新單元格推入列表中? – bbtrb
我認爲,但如果細胞遭受奇怪的突變並決定分成4部分,我會返回什麼? – jms
'std :: vector'將是一個簡單而直接的解決方案。在這一點上,我不會擔心很多性能問題,只是嘗試分工並正確設計界面。 –
bbtrb
|