我希望能够在我的方法中初始化Seat。我想我需要超载我的' ='运营商,但我不确定。
void Ticket::setSize(Ticket ticket[], int a) {
ticket[ticketCount].groupSize = a;
ticket[ticketCount].seatInfo = new Seat[ticket[ticketCount].groupSize];
}
这是我在下面的Ticket课程。我正在调用setSize。并传递变量以初始化与Ticket.groupSize有关的seatInfo。以下是我的机票和座位等级
class Ticket {
private:
Seat * seatInfo;
double totalPrice;
string flightInfo;
int ticketNumber;
int groupSize;
void countPrice();
public:
Ticket(Seat[], int, string);
~Ticket();
void print();
double getPrice();
string toString();
static int getTicketCount();
static void setTicket(Ticket[], int);
static void setSize(Ticket[], int);
const Seat & setSeat(Seat * );
Seat & operator = (Seat & );
}
#endif
Seat.h
class Seat {
private:
int seatNumber;
double price;
const double BUSINESS_PRICE = 200.00;
const double ECONOMIC_PRICE = 100.00;
Person * reserver;
bool isBusinessClass(int);
public:
// constructor
Seat();
Seat(int, int, Person * );
Seat(int, double, Person * );
}
我得到的错误不是可以做到的构造函数。并且没有' ='操作员功能。如果您需要更多信息,请告诉我
答案 0 :(得分:0)
seatInfo被定义为Seat的指针。
Seat * seatInfo;
ticket [ticketCount] .seatInfo可以是指向Seat实例的指针,但不是Seat实例的数组。
让seatInfo指向1个Seat实例以查看错误是否仍然存在?
ticket [ticketCount] .seatInfo = new Seat();
答案 1 :(得分:0)
在您的案例new Class()
中,构造函数被称为new Seat()
。所以用{()替换new Seat
之后的[]。此外,您正在尝试调用未声明的构造函数Seat(int)
,因此要么使用您声明的3个中的一个,要么声明它。