说我有这些结构:内存分配和用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