简体   繁体   English

数组下标C的未解析重载类型> [int]

[英]Unresolved overloaded type>[int] for array subscript c++

I'm getting the error message 'Unresolved overloaded type>[int] for array subscript' in my flight-booking-system program. 我在飞行预订系统程序中收到错误消息“数组下标的未解决的重载类型> [int]”。

What I'm trying to do is set it so that if [j] is equal to 0,1,2,3... it will display accordingly as A,B,C,D. 我想做的是设置它,以便如果[j]等于0、1、2、3 ...它将相应地显示为A,B,C,D。 Until I started doing this my program at least compiled。 直到我开始这样做为止,我的程序至少已编译。

// 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

The above is my flight.h file which contains the Flight class. 上面是我的flight.h文件,其中包含Flight类。 The error message points to my constructor, with the message repeating for all the lines within that contain seatPlan[i][j].setCol('A'); 错误消息指向我的构造函数,该消息针对包含seatPlan[i][j].setCol('A');所有行重复seatPlan[i][j].setCol('A'); and so on. 等等。

I'll include the 'seat.h' file also, just in case it's relevant. 我也会包括“ 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

void seatPlan() is a method and you're treating it as an array. void seatPlan()是一种方法,您将其视为数组。 Did you mean seatArray instead? 你是说seatArray吗?

Also

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

? Really? 真? Why not just 为什么不只是

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

(assuming you fix the previous error) (假设您修复了先前的错误)

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

Here is the problem. 这是问题所在。 seatPlan is not an array. seatPlan 不是数组。 It is the name of the function. 它是函数的名称。

You meant seatArray . 您的意思是seatArray So it should be: 因此应该是:

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

One suggestion: consider using std::array as: 一个建议:考虑将std::array用作:

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

instead of 代替

Seat seatArray[4][6];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM