J'utilise un code qui traite un tableau d'objets dérivés en tant que tableau d'objets de base. La taille des deux objets est la même. Je me demande:Utilisation d'un tableau d'objets dérivés en tant que tableau d'objets de base lorsque les tailles sont les mêmes (CComVariant/VARIANT)
- Est-ce sûr dans la pratique, en gardant à l'esprit que le code ne sera jamais compilé sur les compilateurs Microsoft?
Voici mon exemple:
BOOST_STATIC_ASSERT(sizeof(VARIANT)==sizeof(CComVariant));
//auto_array deletes[] the pointer if detach() isn't called at the end of scope
auto_array<CComVariant> buffer(new CComVariant[bufferSize]);
//...Code that sets the value of each element...
//This takes a range specified as two VARIANT* - the AtlFlagTakeOwnership option
//causes delete[] to be called on the array when the object pEnum referes to
//is released.
pEnum->Init(buffer.ptr,buffer.ptr+bufferSize,0,AtlFlagTakeOwnership);
buffer.detach();