问答详情
源自:4-3 环形队列检测

用Dev cpp报错

18行

void MyQueue::ClearQueue()

undefined reference to `WinMain'

[Error] ld returned 1 exit status

用Dev cpp报错

提问者:慕神7694260 2017-02-15 17:58

个回答

  • qq_囝籽_tCJMTW
    2018-04-01 16:22:36

    有人知道为什么了吗?我用的codeblocks也这样,放进MyQueue.h就可以运行

  • qq_雷盛华_0
    2017-06-21 09:53:05

    这个方法确实有用,但是不明白为什么?

  • 慕神7694260
    2017-02-15 19:22:19

    找出来问题了,鉴于没有人回答,就把自己怎么解决的说一下啦

    直接把MyQueue.cpp里的内容放到MyQueue.h变成一个整合的文件就可以了

    以下MyQueue.h代码

    #ifndef MYQUEUE_H
    #define MYQUEUE_H
    #include <iostream>
    using namespace std;
    class MyQueue
    {
    	public:
    		MyQueue(int queueCapacity);
    		virtual ~MyQueue();
    		void ClearQueue();
    		bool QueueEmpty() const;
    		bool QueueFull() const;
    		int QueueLength() const;
    		bool EnQueue(int element);
    		bool DeQueue(int &element);
    		void QueueTraverse();
    	private:
    		int *m_pQueue;
    		int m_iQueueLen;
    		int m_iQueueCapacity;
    		int m_iHead;
    		int m_iTail;
    };
    MyQueue::MyQueue(int queueCapacity)
    {
    	m_iQueueCapacity = queueCapacity;
    	m_pQueue = new int[m_iQueueCapacity];
    	ClearQueue();
    }
    
    MyQueue::~MyQueue()
    {
    	delete []m_pQueue;
    	m_pQueue = NULL;
    }
    
    void MyQueue::ClearQueue()
    {
    	m_iHead = 0;
    	m_iTail = 0;
    	m_iQueueLen = 0;
    }
    
    bool MyQueue::QueueEmpty() const
    {
    	return m_iQueueLen == 0 ? true:false;
    }
    
    int MyQueue::QueueLength() const
    {
    	return m_iQueueLen;
    }
    
    bool MyQueue::QueueFull() const
    {
    	if(m_iQueueLen == m_iQueueCapacity) return true;
    	else return false;
    }
    
    bool MyQueue::EnQueue(int element)
    {
    	if(QueueFull()) return false;
    	else
    	{
    		m_pQueue[m_iTail] = element;
    		m_iTail++;
    		m_iTail = m_iTail % m_iQueueCapacity;
    		m_iQueueLen++;
    		return true;
    	}
    }
    
    bool MyQueue::DeQueue(int &element)
    {
    	if(QueueEmpty()) return false;
    	else
    	{
    		element = m_pQueue[m_iHead];
    		m_iHead++;
    		m_iHead = m_iHead % m_iQueueCapacity;
    		m_iQueueLen--;
    		return true;
    	}
    }
    
    void MyQueue::QueueTraverse()
    {
    	
    	cout<<endl<<"以下遍历队列:"<<endl;
    	for(int i = m_iHead;i < m_iQueueLen;i++)
    	{
    		i = i % m_iQueueCapacity;
    		cout<<m_pQueue[i]<<endl;
    	}
    	cout<<endl;
    }
    #endif