0

フライト予約システムプログラムで、「配列の添え字の未解決のオーバーロードされたタイプ>[int]」というエラーメッセージが表示されます。

私がやろうとしているのは、[j]が0,1,2,3 ...に等しい場合、それに応じてA、B、C、Dとして表示されるように設定することです。私がこれを始めるまで、私のプログラムは少なくともコンパイルされました。</ p>

// Flight Class - Scotia 2
// 
// Contains information on seating (array), space available and return to menu option.


#include <iostream>
#include <string>
#include "passenger.h"
#include "Seat.h"

using namespace std;

/*struct Seat
        {
            int Available;
            std::string fullName;
        };// End of struct*/

class Flight
{

public:
//default constructor
Flight()
{
//initialise all seat numbers
for(int i=0;i<4;i++)
for(int j=0;j<6;j++)
    {// assigns seats as 1A, 1B etc...
    seatPlan[i][j].setRow(row);
    if(j==0)
    seatPlan[i][j].setCol('A');
    else if(j==1)
    seatPlan[i][j].setCol('B');
    else if(j==2)
    seatPlan[i][j].setCol('C');
    else if(j==3)
    seatPlan[i][j].setCol('D');
    }
}

Seat seatArray[4][6];

    void seatPlan()
    {
        for (int ROW=0;ROW<4;ROW++)
        {
            for (int COL=0;COL<6;COL++)
                {
                    cout << seatPlan[i][j].getSeatRow();
                }
        }
        // End of for loop
    }// End of seatPlan function

//method which returns true if seat is Available and false otherwise
bool getAvailable(int i, int j)
{
    if(seatArray[i][j].Available == 0)
    return true; //seat available
    else
    return false; //seat occupuied
}

string getName(int i,int j){return seatArray[i][j].fullName;}

void setAvailable(int i, int j, int a){seatArray[i][j].Available = a;}
void setName(int i,int j, string name){seatArray[i][j].fullName = name;}

private:
//variables
int row;
char col;

};// End of Flight class

上記は、Flightクラスを含む私のflight.hファイルです。エラーメッセージは私のコンストラクターを指しており、その中のすべての行でメッセージが繰り返されますseatPlan[i][j].setCol('A');

関連する場合に備えて、「seat.h」ファイルも含めます。

#ifndef SEAT
#define SEAT

#include <iostream>

using namespace std;

class Seat
{

    public:
    //deafult constructor
    Seat(){available = true;}

    //accessor methods
    void setRow(int row){seatRow = row;}
    void setCol(char col){seatCol = col;}

    int getSeatRow(){return seatRow;}
    char getSeatCol(){return seatCol;}

    bool isAvailable(){return available;}
    bool switchAvailable(){
    if(available)
    available = false;
    else
    available = true;
    }

    private:
    bool available;
    int seatRow;
    char seatCol;
};

#endif
4

2 に答える 2

1

void seatPlan()はメソッドであり、配列として扱っています。seatArray代わりに意味しましたか?

また

if(seatArray[i][j].Available == 0)
return true; //seat available
else
return false; //seat occupuied

?本当に?なぜだけではないのですか

return seatArray[i][j].Available == 0;

(前のエラーを修正したと仮定して)

于 2013-01-17T20:19:15.100 に答える
1
seatPlan[i][j].setRow(row);

ここに問題があります。配列seatPlanではありません。関数の名前です。

あなたは意味しseatArrayました。したがって、次のようになります。

seatArray[i][j].setRow(row);

1つの提案:次のように使用することを検討しstd::arrayてください:

std::array<std::array<Seat,6>,4> seatArray;

それ以外の

Seat seatArray[4][6];
于 2013-01-17T20:19:30.343 に答える