내가 이러한 구조체를 가지고 말 :메모리 할당과 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
배열을하고 싶어 할 것입니다. 그것이 거의 항상'vector <> '를 사용하는 이유 중 하나입니다. 'Derived * '는'Base *'로 사용할 수 있지만, 배열은 다형성을 갖지 않지만 형성됩니다. –
'memcpy'는'std :: copy'이어야하고'std :: vector'를 사용해야합니다. – GManNickG