【发布时间】:2010-09-21 16:07:26
【问题描述】:
我知道有与此问题相关的已解决问题,但我仍然不知道如何解决我的问题。
我有这样的事情:
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 *? -
另一个想法:
Child必须是Base的孩子吗?它可以只包含Base吗? (很可能不是,但你说得还不够让我知道。) -
如果将“奇怪的东西”移动到
Base构造函数中,那么createChild可以只是return new Child。
标签: c++ class inheritance variable-assignment