0

Is it correct to put dynamic_cast in loop??

//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 に答える