【C++】用Dev-C++写的C++程序老是报错,请问为什么?如何解决?
高洛峰
高洛峰 2017-04-17 15:17:13
0
2
688

MyQueue.cpp的代码如下:

#include "MyQueue.h"
#include <iostream>
using namespace std;

/**
 * 队列的初始化
 * @param queueCapacity int
 */
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;
}

/**
 * 判断队列是否为空
 * @return bool
 */
bool MyQueue::QueueEmpty() const
{
    return m_iQueueLen == 0;
}

/**
 * 判断队列是否已满
 * @return bool
 */
bool MyQueue::QueueFull() const
{
    // 可通过判断长度和容量是否相等来判断队列是否已满
    return m_iQueueLen == m_iQueueCapacity;
}

/**
 * 队列长度
 * @return int
 */
int MyQueue::QueueLength() const
{
    return m_iQueueLen;
}

/**
 * 新元素入队
 * @param  element int
 * @return         bool
 */
bool MyQueue::EnQueue(int element)
{
    // 在入队之前,需要判断队列是否已满,如已满不可插入
    if (QueueFull()) {
        return false;
    }

    m_pQueue[m_iTail] = element;

    // 入队操作,队头不需要变化,队尾需要加1
    m_iTail++;

    // 取余操作,防止溢出。比如当容量为4的队列加满数据,此时队列出去一个数,则队尾指向数组[0]的位置。如果m_Tail++就会变成数组[5],所以用取余%——放队列放满4个数时,4%4=0,对尾自然指向了数组[0]。
    m_iTail = m_iTail % m_iQueueCapacity;
    m_iQueueLen++;
    return true;
}

/**
 * 首元素出队
 * @param  element int
 * @return         bool
 */
bool MyQueue::DeQueue(int &element)
{
    // 在出队之前,需要判断队列是否已空,如已空不可出队
    if (QueueEmpty()) {
        return false;
    }

    // 这一步的意思是为了获得出队的元素的值
    element = m_pQueue[m_iHead];

    // 出队操作,队尾不需要变化,队头需要加1
    m_iHead++;
    m_iHead = m_iHead % m_iQueueCapacity;
    m_iQueueLen--;
    return true;
}

/**
 * 遍历队列,输出所有元素值
 */
void MyQueue::QueueTraverse()
{
    for (int i = m_iHead; i < m_iQueueLen + m_iHead; i++)
    {
        cout << m_pQueue[i % m_iQueueCapacity] << endl;
    }
    cout << endl;
}

MyQueue.h的代码如下:

/**
 * 环形队列C++实现 (注释:讲解一些 C 语言用法)
 */
class MyQueue
{
public:
    MyQueue(int queueCapacity);        // InitQueue(&Q) 创建队列
    virtual ~MyQueue();                // DestoryQueue(&Q) 销毁队列
    void ClearQueue();                // ClearQueue(&Q) 清空队列
    bool QueueEmpty() const;        // QueueEmpty(Q)判空队列
    bool QueueFull() const;         // 判断队列是否已经满了
    int QueueLength() const;        // QueueLength(Q) 队列长度
    bool EnQueue(int element);        // EnQueue(&Q, element) 新元素入队
    bool DeQueue(int &element);        // DeQueue(&Q, &element)首元素出队
    void QueueTraverse();            // QueueTraverse(Q,visit()) 遍历队列,visit()函数:访问的方法
private:
    int *m_pQueue;                    // 队列数组指针
    int m_iQueueLen;                // 队列元素个数
    int m_iQueueCapacity;            // 队列数组容量
    int m_iHead;                    // 队头
    int m_iTail;                    // 队尾
};

编译MyQueue.cpp老是提示报错:

Dev-C++编辑器的版本为:5.11

编译器版本为:

电脑系统为:win7 64位

求解?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(2)
小葫芦

To put it simply, the compiler cannot find the main function, so it reports an error.

阿神

You have no entry function, which is the main function

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template