直接在entity类里面包含一个静态的entitymanager,然后构造的时候吧自己的this加入到entitymanger
如下代码
class entitymanager;
class entity
{
public:
entity();
private:
static boost::shared_ptr<entitymanager> _smanager;
};
entity::entity()
{
//假定manager已经初始化
_smanager->push_back(this);
}
class entity
class entitymanager
{
public:
void push_back(entity*);
private:
//用shared_ptr更加好,当然没有效率
std::list<entity*> _mentity_list;
};
void entitymanager::push_back(entity* ptr)
{
assert(ptr!=nullptr);//由于是类的this,所以不可能nullptr
_mentity_list.push_back(ptr);
}
这个题目真正的难点在提示上面,不看提示1分钟