invalid null pointer是咋回事,看了好久没看出错误。
MyQueue.cpp
#include "MyQueue.h"
#include<iostream>
using namespace std;
MyQueue::MyQueue(int queueCapacity)
{
	m_iQueueCapacity = queueCapacity;
	//当前代码可以调用ClearQueue()
	m_iHead = 0;	//初始化队头
	m_iTail = 0;	//初始化队尾
	m_iQueueLen = 0;	//一开始元素0个
	//默认构造函数要参数要赋初值
	m_pQueue = new Customer[m_iQueueCapacity];
}
MyQueue::~MyQueue()
{
	delete[] m_pQueue;
	m_pQueue = NULL;
}
void MyQueue::ClearQueue()
{
	//清空,但内存不处理
	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++;
	//循环
	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++;
	//循环
	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;
/*******************************************
环形队列的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;
}其他地方仔细看过了 没错,感觉出问题的应该在MyQueue里面,但是怎么也找不出错误。。

 
                            
 
                            
