在我的遊戲引擎中,我有一個代表遊戲世界的狀態類。該狀態包含許多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