Je veux créer en C ++ un tableau d'objets sans utiliser STL.
Comment puis-je faire ceci?
Comment pourrais-je créer un tableau d'Object2, qui n'a pas de constructeur sans argument (constructeur par défaut)?
Je veux créer en C ++ un tableau d'objets sans utiliser STL.
Comment puis-je faire ceci?
Comment pourrais-je créer un tableau d'Object2, qui n'a pas de constructeur sans argument (constructeur par défaut)?
Si le type en question a un constructeur sans arguments, utilisez new[]
:
Object2* newArray = new Object2[numberOfObjects];
n'oubliez pas d'appeler delete[]
lorsque vous n'avez plus besoin du tableau:
delete[] newArray;
S'il n'a pas un tel constructeur, utilisez operator new
pour allouer de la mémoire, puis appelez les constructeurs sur place:
//do for each object
::new( addressOfObject ) Object2( parameters );
Encore une fois, n'oubliez pas de désallouer le tableau lorsque vous n'en avez plus besoin.
// allocate memory
Object2* objArray = static_cast<Object2*>( ::operator new ( sizeof Object2 * NUM_OF_OBJS ) );
// invoke constuctors
for ( size_t i = 0; i < NUM_OF_OBJS; i++ )
new (&objArray[i]) Object2( /* initializers */ );
// ... do some work
// invoke destructors
for ( size_t i = 0; i < NUM_OF_OBJS; i++ )
objArray[i].~Object2();
// deallocate memory
::operator delete ( objArray );
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.