将派生对象添加到(抽象)基指针数组中[重复]
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 个元素数组的指针。
【讨论】:
以上是关于将派生对象添加到(抽象)基指针数组中[重复]的主要内容,如果未能解决你的问题,请参考以下文章