将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
}
}
答案 0 :(得分:1)
将它置于for循环中没有错
您的类应该是多态的,但这是使用dynamic_cast
的基本条件。
在你的例子中,你并没有真正做多,因为你在每次迭代时都会覆盖指针。但这可能是您对原始代码的简化。
答案 1 :(得分:1)
在循环中使用dynamic_cast
没有错。
但是您的代码确实存在不同的问题:指针okptr
和waitingptr
仅限于最里面的{}
,因此以后不能使用。