我有一個Ellipsoid結構,它是Object結構的派生物。基本上,我想在Scene結構中創建一個Object [3] [13]指針數組,我可以指向不同的Object衍生物。在函數中傳遞繼承的類數組會創建內存泄漏?
struct Ellipsoid : public Object {
//...
}
在主要功能:
Ellipsoid ellipsoids[13];
addEllipsoids(3, ellipsoids); // this fills the array with valid ellipsoids, everything seems to be fine up until this point
// printing the contents here, everything is good
scene.addObjects(ellipsoids);
這裏打印 「橢圓」 陣列後,一切似乎都不錯。
在場景結構:
struct Scene{
int arr_num;
Object* objects[3];
void addObjects(Object* o){
// printning the o[0], o[1], ... contents here, getting garbage..
objects[arr_num++] = o;
}
當我在這裏打了* O含量(從0..12)甚至在我將它們添加到對象數組,我得到討厭的內存垃圾結果。
這是作業,我不能使用std :: vector和這樣的東西,只有非常基本的東西。我真的不知道這裏有什麼問題。
可能重複[?可以將指針基點至派生對象的數組] (http://stackoverflow.com/questions/7196172/can-a-pointer-to-base-point-to-an-array-of-derived-objects) – user2079303 2014-11-05 13:14:17
如果你從課程中學到了一件事,那麼我希望平淡無奇的數組是可怕的,當你被允許最終使用它們時,你會欣賞標準容器。 – user2079303 2014-11-05 13:23:28
啊,是的,謝謝,我沒有發現這個問題,現在我明白了。 – Hadron 2014-11-05 14:14:23