我知道這個問題有解決的問題,但我仍然無法弄清楚如何解決我的問題。如何將一個子類分配給基類?
我有這樣的事情:
class Base
{
static Base* createBase()
{
Base *b = new Base();
... //does a lot of weird things
return b;
}
}
class Child : public Base
{
static Child* createChild()
{
Child *c = createBase(); // error
return c;
}
}
我知道爲什麼它不工作,但我必須找到一個方法來做到這一點。 createBase函數做了很多事情,所以我不想重新編碼它。
有什麼建議嗎?
好的,爲什麼你必須找到一種方法來做到這一點?認真。你知道你不能那樣做,而你爲什麼不能這麼做。爲什麼你絕對必須有一個不指向'Child'的Child *'? – 2010-09-21 16:19:55
另一個想法:「孩子」必須是「基地」的孩子嗎?它能包含一個'Base'嗎? (很可能不是,但你沒有足夠的話讓我知道。) – 2010-09-21 16:29:37
如果你把「奇怪的東西」移到'Base'構造函數中,那麼'createChild'就可以'返回新的子類'。 – 2010-09-21 17:17:12