【发布时间】:2019-10-07 15:44:06
【问题描述】:
我想要什么,如果不是用这种语法,但在精神上:
class A
{
virtual A f()=0;
};
class B : public A
{
B f();
};
我确实看到了上面代码的问题:A 是虚拟的,因此不能创建 A 的实例,因此不能返回 A 的实例。
然而,A 的具体子类(例如 B)必须实现函数 f,它总是能够返回它们自己的实例(例如 B 的实例),即 A 的子类的实例。
虽然上述内容不正确且无法编译,但有没有办法获得类似的有效内容? 可能但不一定是这样的:
class A
{
virtual "a concrete sublclass of A" f()=0;
};
注意:我不希望返回指针或引用,因为我希望 B 不必将自身的实例作为属性进行管理。
注意:如果可能是 c++11,但也很想知道新版本的消息
【问题讨论】:
标签: c++ inheritance virtual