2

宿題の手伝いが必要です。駐車場のコードを書く必要があります。そして、それを書くためにParkbox、ヒープ上に別のクラス "Parkinggarage" を介して作成されたクラス " "のインスタンスの入力を、#define EMPTY "--------". これが私のコードです: パークボックスの定義:

class Parkbox{
char *license_plate; // car's license plate

public:
Parkbox(); //Default CTOR
Parkbox(char * ); // CTOR
~Parkbox(); // DTOR
void show();
};
and ParkingGarage:
class ParkingGarage{
Parkbox ***p2parkboxes;

ヒープ上に Parkbox インスタンスを作成するための私の CTOR または ParkingGarage:

ParkingGarage::ParkingGarage(const int rw,const int clm, const int plns){

        p2parkboxes = new Parkbox **[plns];//points to the floors and make the arraq of p2p same size as number as floors
        for(int p=0;p<plns;p++){
            p2parkboxes[p]= new Parkbox *[plns];//for each Plane creats an array of pointer that is same with the num of rows
            for(int r=0;r<rw;r++)
                p2parkboxes[p][r]= new Parkbox [clm];
        }
    }

void ParkingGarage::find_next_free_parking_position()
{
    for(int f=0;f<dimensions_of_parkhouse[0];f++){
        for(int r=0;r<dimensions_of_parkhouse[1];r++){
            for (int c=0;c<dimensions_of_parkhouse[2];c++){ 
                //p2parkboxes[f][r][c] is the instance of the class Pakbox
                if(p2parkboxes[f][r][c]==EMPTY)
                {
                    next_free_parking_position[0]=p;
                    next_free_parking_position[1]=r;
                    next_free_parking_position[2]=c;
                }
            }
        }
    }
}

しかし、「」の時点で、「p2parkboxes[f][r][c]==EMPTYこれらのオペランドに一致する演算子 "==" がありません」というエラーが表示されます。では、クラス インスタンスを EMPTY などの別の変数と直接比較するにはどうすればよいでしょうか。

私があなたにとって明確かどうかはわかりません。しかし、この問題を解決しないとコードを完成させることができないので、助けてください。

4

2 に答える 2

0

一致する演算子のオーバーロードを作成する必要があります。コンパイラ エラーはパラメーターを指定する必要がありますが、メンバーは次のようになります。

bool Pakbox::operator==(const char *other) {
    return !strcmp(other, this->memberstring);
}

memberstringそのロットにあるものを保持している実際のメンバーに置き換える必要があることに注意してください。

于 2012-05-11T07:44:16.203 に答える
0

一般に、2 つの同じタイプのみを比較できます。演算子のオーバーロードを使用すると、独自の比較演算子を定義して、この問題に対処できます。ただし、C++ はデフォルトで 2 つのクラスを比較できません。

したがって、あなたのコードでは、char* タイプとクラスタイプを比較しているようです。char* を別の char* と比較する必要があります。文字列として扱われる場合は、安全性を高めるために strcmp を使用する必要があります

于 2012-05-11T07:43:29.173 に答える