如何从通用接口指针获取派生类对象。 我不想为了实现上述目的而输入通用接口。
e.g:
class Base {}; // Has pure virtual functions and is my interface class
class Derived : public Base {}; // Additional functions .
Base *b = new Derived();
现在,我希望从Derived *derived
获取派生指针b
而不进行强制转换。
我怎样才能做到这一点?
答案 0 :(得分:0)
您的设置似乎很奇怪,我会寻找替代选项,例如直接返回Derived或将您需要的功能移动到基础中,因为您似乎需要它们。
如果您仍想这样做,可以使用以下内容:
class Derived; // Forward declaration
class Base {
public:
virtual Derived* as_derived() { return null; }
...
};
class Derived : public Base {
public:
Derived* as_derived() override { return this; }
};
尽管如此,这看起来像是一个黑客,我建议改为投射。至少把它作为一种常见的模式,让其他人更容易理解。