我的航班预订系统程序中收到错误消息“未解决的重载类型> [int]数组下标”。
我要做的是将它设置为如果[j]等于0,1,2,3 ......它将相应地显示为A,B,C,D。直到我开始这样做我的程序至少编译。
// 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.h文件,其中包含Flight类。错误消息指向我的构造函数,消息重复包含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
答案 0 :(得分: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;
(假设您修复了上一个错误)
答案 1 :(得分:1)
seatPlan[i][j].setRow(row);
这是问题所在。 seatPlan
不数组。它是函数的名称。
你的意思是seatArray
。所以它应该是:
seatArray[i][j].setRow(row);
一个建议:考虑使用std::array
作为:
std::array<std::array<Seat,6>,4> seatArray;
而不是
Seat seatArray[4][6];