ホームページ  >  に質問  >  本文

【C++】用Dev-C++写的C++程序老是报错,请问为什么?如何解决?

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位

求解?

高洛峰高洛峰2765日前685

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-04-17 15:19:13

    簡単に言うと、コンパイラは main 関数を見つけることができないため、エラーを報告します。

    返事
    0
  • 阿神

    阿神2017-04-17 15:19:13

    メイン機能であるエントリー機能がありません

    返事
    0
  • キャンセル返事