Что вы, возможно, захотите (хотя пока не уверены в этом вопросе), это массив указателей на объекты ДНК.То, что вы объявляете, это «просто» массив объектов ДНК;и вы не можете установить объект равным нулю, как ответ Пита Беккера очень хорошо объясняет.
Следующий код будет работать:
// notice how we use +1 here to have place for the NULL element at the end
DNA* newDNA[] = new DNA*[allRightSequences.size()+1];
newDNA [allRightSequences.size()] = NULL;
Для каждого элементамассив, однако вам также необходимо создать объект ДНК через new DNA...
затем ...
Обратите внимание, что если вы используете компилятор, поддерживающий C ++ 11, используйте nullptr
вместо NULL
,И если вы хотите полностью избежать проблем с указателями, вы можете использовать такую конструкцию, как std::optional
, если вы используете C ++ 17 или boost::optional
для более ранних версий, как описано в этот ответ на другой вопрос , как упомянуто Baum mit Augen выше.
Кроме того, хороший вопрос заключается в том, что вам действительно нужен нулевой указатель в конце - если это просто для определения последнего элемента при итерации по массиву, то вы можетелучше использовать std::vector<DNS>
или аналогичный тип коллекции ...