Mam tridu kde dynamicky alokuji 'ukazatel' na 'pole ukazatelu' meho 'objektu':
Point ** stack
volam tedy v pripade potreby svoji funkci na realokaci pole:
void Stack::realoc() {
arraySize += REALOC_SIZE;
Point ** aloc = new Point * [arraySize];
if (stack != NULL) {
std::memcpy ( aloc, stack, top * sizeof(Point));
/*
std::cout << stack[0]->getCol() << std::endl; // ret 5
std::cout << aloc[0]->getCol() << std::endl; // ret 5
aloc[0]->setCol(1);
std::cout << stack[0]->getCol() << std::endl; // ret 1
std::cout << aloc[0]->getCol() << std::endl; // ret 1
*/
delete [] * stack;
}
stack = aloc;
}
//'arraySize' je aktualni velikost pole, 'top'je pocet prvku v poli a 'REALOC_SIZE' je konstanta o kterou pole zvetsuji, getCol vraci int...
z radek zakomentovaneho kodu je videt oc mi jde. Kopiruji pamet, ale zkopiruji se pravdepodobne jen ukazatele na objekty. Predpokladam, ze to nebude tim, ze nemam ve sve tride Point "kopirujici konstruktor" a pretizeny operator "=" pro hlubokou kopii, protoze trida point obsahuje jen dva integery. Takze otazka tupeho javisty je: jak spravne pouzit memcpy, aby se zkopirovaly i objekty :)