0
上this question跟進,人都建議我去 「選項3」,這可能是這樣的:不可能從這個對象繼承嗎?
class b2Body {
private:
b2Body() {}
friend class b2World;
};
class Body : public b2Body {
private:
Body() {}
friend class World;
};
class b2World {
public:
b2Body *CreateBody() {
return new b2Body;
}
};
class World : public b2World {
public:
Body *CreateBody() {
return new Body;
}
};
int main() {
World w;
Body *b = w.CreateBody();
return 0;
}
但有兩個主要問題是:
Body
永遠不能構建,即使使用World::CreateBody
(因爲b2Body
是私有的)- 即使可以,那麼
b2Body
部分不會被正確初始化(b2World::CreateBody
需要被稱爲)
這是否意味着我永遠無法從b2Body
/b2World
繼承和遵循同樣的設計模式? (請記住,我不能編輯b2 *類)
如果是這樣,我想你們會建議我只保留b2World
和b2Body
作爲成員變量嗎?
我認爲現在可以歸結爲以下兩個選項:
不錯!然後'身體'不需要朋友'世界'。 http://codepad.org/CXufhOiY – mpen 2009-10-16 19:40:23