0

Queue *q1, *q2; を初期化しました。しかし、キュークラスにキューを作成できませんでした

主要

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;

1 つのポインター変数 ( Queue*) と、タイプ の通常の変数を作成しますQueueq2通常の型である の場合のみQueue、コンストラクターが呼び出されます。コンストラクターが (デバッグ モードで) 呼び出されていることはわかりません。これは、グローバル変数であるため、 BEFORE main, (または) と呼ばれているためです。WinMainグローバル変数はmainルーチンの前に初期化されます。

コンストラクター自体にブレークポイントを設定する必要があります - Queue::Queue()

お役に立てれば。

于 2013-01-13T09:32:13.463 に答える