|
C-/C++-Quelltext
|
1
2
3
|
// Beides sind dynamische Container
std::list<Base*> liste;
std::vector<Base*> array;
|
Tja gegen Container hab ich in diesem Fall auch was einzuwenden:
So wie das jetzt geschrieben ist kann ich 'liste' schlecht kopieren: Die Zeiger werden zwar alle kopiert, zeigen jedoch immernoch auf die selben Objekte.
Ich hab mich nur gefragt ob es eine einfachere Methode gibt. Das ist jedenfalls mein Code zur Vergroesserung, damit wird das ganze doch dynamisch oder?
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
//Create a new double-sized pointerfield and initialize it to NULL
Entity** newField = new Entity*[m_iEntities*2];
for(int i = 0;i<m_iEntities*2;++i) newField[i] = NULL;
//Copy the old pointers
for(int i = 0;i<m_iEntities;++i) newField[i] = m_entities[i];
//delete the old pointers but don't delete the objects they point to!
delete[] m_entities;
//Update the pointer and double the number of elements
m_entities = newField;
m_iEntities *= 2;
//now we have more space, try again
|
Ich schliess gleich mal ne Frage an:
Kann ich in einer erbenden Klasse irgendwie den Konstruktor/Destruktor der Parent-Klasse aufrufen oder sollte man in C++ den shared-code besser in Funktionen à la Init() und Release() unterbringen?