控制可以达到非空函数Xcode c ++的结束

时间:2014-10-09 20:22:26

标签: xcode queue

为什么我收到此错误? 在我将此文件添加到Xcode之前,这不是一个错误,不确定是什么错误。 在我的队列类中删除函数:

class queue {

private:
    point* Q[MSIZE];

    int front, rear, size;

public:
    queue() {
        // initialize an empty queue
        front = 0; rear = 0; size = 0;
        for (int j=0; j < MSIZE; ++j)
           Q[j] = 0;
    }

    void insert(point* x) {
        if (size != MSIZE) {
            front++; size++;
            if (front == MSIZE) front = 0;
            Q[front] = x;
        }
    }

    point del() {
        if (size != 0) {
            rear++; if (rear == MSIZE) rear = 0;
            point temp(Q[rear]->getx(), Q[rear]->gety());
            size--;
            return temp;
        };
    } // error "Control may reach end of non-void function" on this line
}

1 个答案:

答案 0 :(得分:1)

函数del返回point。如果size!= 0,则没有return语句。你需要在另一种情况下返回一些东西,或者函数可以在不返回point的情况下结束,这会产生错误。

解决这个问题的一种方法是:return null不能做到这一点:

bool del(point& pointRef)
{
    if (size != 0)
    {
        rear++;
        if (rear == MSIZE)
        {
            rear = 0;
        }
        pointRef = Q[rear];
        size--;
        return true;
    }
    return false;
}

然后在这个功能之外,如果你弄错了,你什么都不知道。如果你成功了,那么你知道你有一个指向被删除的point的指针。

调用它的示例:

point aPoint;
bool result;

result = del(aPoint);
if(result)
{
    // do stuff with aPoint
}
else
{
    // the queue was empty
}