У меня есть следующий код C ++:
Some_class * temp1 = findTemp1(...); // returns NULL or a valid pointer
Some_class * temp2 = findTemp2(...); // returns NULL or a valid pointer
Some_class * temp3 = findTemp3(...); // returns NULL or a valid pointer
Теперь я хотел бы посчитать, сколько из них вернуло действительный указатель (0, 1, 2 или 3).
Единственный способ, которым я могу думать, это просто тестировать их один на один:
int count = 0;
if (temp1)
count++;
if (temp2)
count++;
if (temp3)
count++;
для 3 указателей, это не так уж плохо, но он плохо масштабируется. Есть ли более эффективный способ, предполагающий, что я не переопределил findtempn funcitons (возможно, пройти в счетчик)?
Большое спасибо для ваших быстрых ответов! Нет, я не собираюсь изменить код, мне просто интересно, что были мои другие варианты. Я также понял, что нельзя просить о чем-то «масштабируемом», если я использую четкие литералы, такие чтобы определить 3 указателя. Конечно, я не думал о том, что вы ответили :)