问答详情
源自:5-1 队列的实际应用

刚好在10分钟的那个位置出错了。

刚好在10分钟的那个位置出错了。
Customer的构造函数:
Customer::Customer()
{
    m_strName = "";
    m_iAge = 0;
}
Customer::Customer(string name, int age)
{
    m_strName = name;
    m_iAge = age;
}

Dequeue()代码:
bool MyQueue::Dequeue(Customer &element)
{
    if(QueueEmpty())
    {
        cout << "Queue is Empty. No more actions needed." << endl;
        return false;
    }
    else
    {
        element = m_pQueue[m_iHead];
        m_iHead++;
        m_iHead = m_iHead % m_iQueueCapacity; //回到第一个位置;
        m_iQueueLen--;
        return true;
    }
}
然后执行代码:
Customer c4("",0);
Customer c5;
p->Dequeue(c4); //c4, c5都报错。

在执行p->Dequeue(c4)时,不管怎么样都会出现“程序已经停止运行”的那个错误提示框,然后返回值是:
Process terminated with status -1073741819 (0 minute(s), 5 second(s))。
但使用c4.printInfo()可以正常获得队列的那个值,后续再遍历也是对的。

感觉整个代码都是完全搬下来的了,哪儿没对?

提问者:王业 2016-12-04 22:54

个回答

  • 王业
    2016-12-10 20:38:48

    应该是说改成delete p就对了。

  • 王业
    2016-12-10 19:57:17

    我自己找到原因了,我在后面直接执行了delete []p操作,改用清除队列的方法之后就好了。

  • NoBB_
    2016-12-07 17:16:41

    c4,c5 入队列了吗?