0

我已经初始化了队列 *q1, *q2; 但它无法在我的 Queue 类中创建 Queue

主要的

Queue *q1, *q2; // Global variable

队列类

// codes......

Queue::Queue() { // default constructor
    size = 0;
    front = 0;
    rear = Q_MAX_SIZE -1;
}

Queue::~Queue() { 
    while(!isEmpty()) {
        dequeue();
    }
}

void Queue::enqueue(Car c) {
    if (!isFull()) {
        rear = (rear + 1) % Q_MAX_SIZE; // circular array
        carQueue[rear] = c;
        size++;
    } else {
        cout << "Queue is currently full.\n";
    }
}

// codes.....

在调试模式下,我似乎无法使用默认构造函数初始化队列,它无法读取任何大小,前后。

4

1 回答 1

0

该声明: Queue *q1, q2;

创建一个指针变量 ( Queue*) 和一个类型为 的普通变量Queue。只有对于q2普通类型Queue的,构造函数才会被调用。您看不到构造函数被调用(在调试模式下),只是因为它被称为 BEFORE main,(或WinMain) - 因为它是全局变量。全局变量在main例程之前初始化。

您需要在构造函数本身上放置一个断点 - Queue::Queue()

希望这可以帮助。

于 2013-01-13T09:32:13.463 回答