Я использую код, который обрабатывает массив производных объектов как массив базовых объектов.Размер обоих объектов одинаков.Мне интересно:
- Безопасно ли это на практике, учитывая, что код будет скомпилирован только на компиляторах Microsoft?
Вот мой пример:
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();