将dynamic_cast放入循环中

时间:2012-12-10 08:31:07

标签: c++ loops casting dynamic-cast

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

2 个答案:

答案 0 :(得分:1)

将它置于for循环中没有错 您的类应该是多态的,但这是使用dynamic_cast的基本条件。

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

答案 1 :(得分:1)

在循环中使用dynamic_cast没有错。

但是您的代码确实存在不同的问题:指针okptrwaitingptr仅限于最里面的{},因此以后不能使用。