将派生对象添加到(抽象)基指针数组中[重复]

Posted

技术标签:

【中文标题】将派生对象添加到(抽象)基指针数组中[重复]【英文标题】:Adding derived objects into an array of (abstract) base pointers [duplicate] 【发布时间】:2015-04-11 06:54:42 【问题描述】:

在将派生对象添加到(抽象)基指针数组中时遇到了问题。为了简化我想要做的事情,这里有一个例子:

Base** baseArray = new Base*[3];
baseArray[0] = new derived1(param,param);
baseArray[1] = new derived2(param,param);
baseArray[2] = new derived3(param,param);

现在,我还没有让我的虚拟 Print() 打印出 baseArray 元素,但是使用 vs2012 调试器我只能在 baseArray 中看到 baseArray[0]。其他两个刚刚消失。

但我想我的主要问题是,上面的示例是否可行。如果是,那么询问可能发生的事情是否太过分了。如果没有,有没有(更好的)方法?

编辑:谢谢大家!

【问题讨论】:

什么意思 - baseArray[1] 是一个无效的指针? 合理的问题。已 +1 并作为骗子关闭只是为了整理。 【参考方案1】:

您的代码是正确的。给定一个动态分配的数组,Visual Studio 调试器将只显示第一个元素。 This 回答可能会有所帮助。

【讨论】:

谢谢,我认为你是对的。我应该早点问。 :)【参考方案2】:

是的,它工作得很好。调试器在骗你 - 可能是因为 baseArray 的静态类型是指向指针的指针,而不是指向 3 个元素数组的指针。

【讨论】:

以上是关于将派生对象添加到(抽象)基指针数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

关于C++基类、派生类的引用和指针

在以抽象基类为参数的函数中将指针和赋值运算符与派生类一起使用

使用具有指向派生类对象的指针的基类指针数组调用派生类方法

使用基类指针查找派生类对象的大小

制作基类指针的向量并将派生类对象传递给它(多态)

使用具有抽象基类指针并调用派生类函数的映射