invalid null pointer是咋回事,看了好久沒看出錯誤。
MyQueue.cpp
#include?"MyQueue.h"
#include<iostream>
using?namespace?std;
MyQueue::MyQueue(int?queueCapacity)
{
m_iQueueCapacity?=?queueCapacity;
//當前代碼可以調(diào)用ClearQueue()
m_iHead?=?0; //初始化隊頭
m_iTail?=?0; //初始化隊尾
m_iQueueLen?=?0; //一開始元素0個
//默認構(gòu)造函數(shù)要參數(shù)要賦初值
m_pQueue?=?new?Customer[m_iQueueCapacity];
}
MyQueue::~MyQueue()
{
delete[]?m_pQueue;
m_pQueue?=?NULL;
}
void?MyQueue::ClearQueue()
{
//清空,但內(nèi)存不處理
m_iHead?=?0;
m_iTail?=?0;
m_iQueueLen?=?0;
}
bool?MyQueue::QueueEmpty()?const
{
if?(m_iQueueLen?==?0)?
return?true;
else
return?false;
//return?m_iQueueLen?==?0???true?:?false;
}
bool?MyQueue::QueueFull()?const
{
if?(m_iQueueLen?==?m_iQueueCapacity)
return?true;
else
return?false;
}
int?MyQueue::QueueLength()?const
{
return?m_iQueueLen;
}
bool?MyQueue::EnQueue(Customer?element)
{
//判滿
if?(QueueFull())
return?false;
m_pQueue[m_iTail]?=?element;
m_iTail++;
//循環(huán)
m_iTail?=?m_iTail?%?m_iQueueCapacity;
m_iQueueLen++;
return?true;
}
bool?MyQueue::DeQueue(Customer?&element)
{
if?(QueueEmpty())
return?false;
element?=??m_pQueue[m_iHead];
m_iHead++;
//循環(huán)
m_iHead?=?m_iHead?%?m_iQueueCapacity;
m_iQueueLen--;
return?true;
}
void?MyQueue::QueueTraverse()
{
//m_iHead?=?3時,m_iTale?=?1時,通過以下可以順利
//打印出m_pQueue[3],m_pQueue[0]的值
for?(int?i?=?m_iHead;?i?<?(m_iHead?+?m_iQueueLen);?i++)?{
m_pQueue[i?%?m_iQueueCapacity].printInfo();
}
}demo.cpp
#include<iostream>
#include<stdlib.h>
#include?"MyQueue.h"
using?namespace?std;
/*******************************************
環(huán)形隊列的C++代碼檢測
*******************************************/
int?main(void)
{
MyQueue?*p?=?new?MyQueue(4);
Customer?c1("vortesnail",?21);
Customer?c2("hello",?22);
Customer?c3("world",?23);
p->EnQueue(c1);
p->EnQueue(c2);
p->EnQueue(c3);
p->QueueTraverse();
delete?p;
p?=?NULL;
system("pause");
return?0;
}其他地方仔細看過了 沒錯,感覺出問題的應(yīng)該在MyQueue里面,但是怎么也找不出錯誤。。
2017-12-22
加個大括號
2016-11-06
錯誤截圖: