【发布时间】:2019-11-26 18:52:18
【问题描述】:
我有课
class A
{
BasePtr * ptr;
virtual BasePtr * getPtr() { return ptr; }
virtual void pure() = 0;
}
我想从中派生两个类来创建自己的 ptr 版本:
class B : public A
{
B() : A() { ptr = new RoundPtr(); }
};
class C : public A
{
C() : A() { ptr = new SquarePtr(); }
}
然后我创建一个指向基本类的指针列表:
A * list[2];
list[0] = new B();
list[1] = new C();
并调用此方法:
list[i]->getPtr();
但我发现它返回一个未初始化的指针。
那么,这里如何正确使用多态呢?如何正确创建此字段以使用不同类型的字段?
【问题讨论】:
-
这段代码不能编译,但如果错误以明显的方式得到修复,那么指针就会被初始化。请贴出真实代码。
-
我们可以得到minimal reproducible example 吗?就像代码不会编译一样。
-
Works fine for me 一旦语法错误等被修复。
-
添加编译代码作为答案
标签: c++ inheritance polymorphism abstract-class virtual-functions