說我有這些結構:內存分配和用C繼承類++
struct Base{
...
}
struct Derived:public Base{
//everything Base contains and some more
}
我具有其中欲複製的這些數組,然後改變它的功能。
void doStuff(Base *data, unsigned int numItems){
Base *newdata = new Base[numItems];
memcpy(newdata, data, numItems*sizeof(Base));
...
delete [] newdata;
}
但是,如果我用這個函數像這樣:
Base *data = new Derived[100];
doStuff(data, 100);
這是行不通的,不是嗎?由於Derived1大於Base,因此爲Base分配內存不足?
這是行不通的,問題是究竟是什麼ü要做到用C – Drakosha 2010-02-18 22:18:56
陣列++有這些類型與繼承陷阱的。這是我幾乎總是使用'vector <>'的一個原因。雖然'Derived *'可以用作'Base *',但是數組不是多態的,但是形成了。 – 2010-02-18 22:39:08
'memcpy'應該是'std :: copy',並使用'std :: vector'。 – GManNickG 2010-02-18 22:43:43