在我的游戏引擎中,我有一个代表游戏世界的状态类。该状态包含许多Body对象,每个对象都定义一个刚体。每个状态都有一个容器来跟踪它拥有的Body对象,并且每个Body都有一个指向其父状态的指针。容器关系和封装
纲要州级:
class State {
private:
std::set<Body*> _bodies;
public:
//It could be done here
void addBody(Body* body) {
//Remove from old State
if (body->_state)
body->_state->_bodies.erase(this);
//Set Body's back-reference
body->_state = this;
//Add to this State
_bodies.insert(body);
}
};
体类概况:
class Body {
private:
State* _state;
public:
//It could also be done here
void setState(State* state) {
//Remove from old State
if (_state)
_state->_bodies.erase(this);
//Set back-reference
_state = state;
//Add to the new State
if (_state)
_state->bodies.insert(this);
}
};
的问题,如果有一个,就是添加/删除一个机构/从一个国家需要改变每个人的私人成员。
有一次,我考虑有一个状态 - 介体静态类,它有朋友访问这两个类。这听起来不错,因为状态与身体的关系将由这个名字明确地管理,但是对于管理一个简单的关系来说,这是很多的声明开销。
有没有“更好”的方法来做到这一点?我想看看那里有什么想法。
这是真的,没有任何理由,每个关系管理功能必须在一个单独的类。 – mvanbem 2010-02-19 17:37:52