我在链表中存储指向类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
|