0

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
            }
    }
4

2 回答 2

1

将它放在 for 循环下没有错。
你的类应该是多态的,但这是使用dynamic_cast.

在您的示例中,您并没有真正实现太多,因为您在每次迭代时都覆盖了指针。但这可能是您对原始代码的简化。

于 2012-12-10T08:33:44.633 回答
1

dynamic_cast在循环中使用没有错。

但是您的代码确实有一个不同的问题:指针okptrwaitingptr仅作用于最内层{},因此以后不能使用。

于 2012-12-10T08:34:33.160 回答