Я хочу перебрать массив указателей на абстрактный класс, чтобы найти «пустой» слот, то есть проверить, указывает ли элемент на объект производного класса или нет.Мой подход заключается в создании массива и установке каждого элемента на nullptr.Затем я могу проверить, является ли элемент nullptr.
Это работает, но есть ли лучший способ?Редактировать: Могу ли я проверить первый «пустой» элемент в массиве указателей на абстрактный класс (в котором производные классы будут периодически создаваться и указываться массивом, делая этот элемент не «пустым»), не назначая каждый элементк nullptr при настройке массива и последующей проверке на nullptr как способ проверить, является ли элемент «пустым»?Другими словами, могу ли я напрямую проверить, указывает ли элемент на построенный базовый класс или нет?
Cat** catArray = new Cat*[200];
for(int i = 0; i < 200; i++){
catArray[i] = nullptr;
}
for(int i = 0; i < 200; i++){
if(catArray[i] == nullptr){ //edited, was typo as "!="
AddRealCat(...);
break;
}
}
Интересно, есть ли более простой способ сделать это, чтобы проверить, есть ли элемент в массиве указателей?на абстрактный класс указывает на объект производного класса или является просто абстрактным указателем, не устанавливая для элемента значение nullptr.Например, есть ли bool IsObject (ObjectType * ptr) или что-то в стандартной библиотеке?
И мне интересно, если установка каждого элемента на nullptr создает какие-либо потенциальные проблемы, кроме вычисленийстоимость обхода массива и установки элементов в nullptr.