Неразрешенный перегруженный тип & gt; [int] для нижнего индекса массива Переполнение стека

Я получаю сообщение об ошибке «Неразрешенный перегруженный тип> [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

Решение

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];
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

По вопросам рекламы [email protected]