Это правильно поставить dynamic_cast
в цикле??
//Searches for the reservation with the given reservation number, and //deletes it. Uses the confirmReservation function if the reservation to be //deleted was an OK one
void cancelReservation(string resNum)
{
for (int i=0;i<seats+waitingListMax;i++)
{
for (int seat=i;seat<seats;seat++)
{
Ok* okptr=dynamic_cast <Ok*>(reservations[seat]);
}
for ( int wait=seats;wait<seats+waitingListMax;wait++)
{
Waiting* waitingptr=dynamic_cast <Waiting*>(reservations[wait]);
}
if ((reservations[i]!=0) && (reservations[i]->getReservationNumber()==resNum))
if (okptr)
{
//doing somting
}
if (waitptr)
{
//doing somthing else
}
}
Нет ничего плохого в том, чтобы поставить его под цикл.
Ваш класс должен быть полиморфным, но это является основным условием для использования dynamic_cast
,
В вашем примере вы на самом деле не сильно достигаете, потому что вы перезаписываете указатель на каждой итерации. Но это, вероятно, ваше упрощение исходного кода.
Там нет ничего плохого в использовании dynamic_cast
в цикле.
Но у вашего кода есть другая проблема: указатели okptr
а также waitingptr
ограничены только до глубины души {}
, поэтому не может быть использован позже.