0

キュー クラス

   #ifndef Queue_H
    #define Queue_H

    #include "Car.h"
    #include <iostream>
    #include <string>

    using namespace std;

    const int Q_MAX_SIZE = 20;

    class Queue {
    private:

        int size; // size of the queue
        Car carQueue[Q_MAX_SIZE];
        int front, rear;
    public:
        Queue();
        ~Queue();
        bool isEmpty();
        bool isFull();
        void enqueue(Car c);
        void dequeue(); // just dequeue the last car in the queue
        void dequeue(Car c); // if a certain car wants to go out of the queue midway. 
                             // Condition: Car is not in washing. Meaning is not the 1st item in the queue
        void dequeue(int index); // same as the previous comment
        Car getFront();
        void getCarQueue(Queue);
        int length();
        Car get(int);
    };

    Queue::Queue() {
        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";
        }
    }

    void Queue::dequeue() { 

    }

    void Queue::dequeue(int index) {
        if(!isEmpty()) {
            front = (front + 1) % Q_MAX_SIZE;
            if(front != index) {
                carQueue[index-1] = carQueue[index];
                rear--;
                size--;
            } else {
                cout << "Not allowed to dequeue the first car in the queue.\n";
            }
        } else {
            cout << "There are no cars to dequeue.\n";
        }
    }

    bool Queue::isEmpty() {
        return size == 0;   
    }

    bool Queue::isFull() {
        return (size == Q_MAX_SIZE);
    }

    Car Queue::getFront() {
        return carQueue[front];
    }

    int Queue::length() {
        return size;
    }

    Car Queue::get(int index) {
        return carQueue[index-1];
    }

    void Queue::getCarQueue(Queue q) {
        for(int i = 0; i< q.length(); i++) 
            cout << q.get(i) << endl;  // Error here
    }

    #endif

エラー C2679: バイナリ '<<' : タイプ 'Car' の右側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません) このような奇妙なエラーが発生します。それで、何か問題がありますか?ありがとう!

4

1 に答える 1

1

coutcarオブジェクトの処理方法がわかりません。オブジェクトを見たことがなく、テキストとして car出力する方法を知りません。、、、などについて知っている型のみを処理できます。特定のエラーは、およびを受け取る演算子のバージョンがあるためです。carcoutstringcharint<<ostreamcar

次の 2 つのオプションがあります。

  1. operator<<を取るオーバーロードを作成します。それは cout を出力する方法を示します。通常、車を表示する方法は複数あるため、これは通常行われません。ostreamcarcar
  2. 次のような車のプロパティを手動で出力するように、出力ステートメントを記述します。 cout << c.getMake() << " " << c.getModel()
于 2013-01-13T04:12:52.823 に答える