初始化类的聚合成员
initializing aggregated members of a class
我希望能够在我的方法中初始化 Seat。我想我需要重载我的"="运算符,但我不确定。
void Ticket::setSize(Ticket ticket[], int a) {
ticket[ticketCount].groupSize = a;
ticket[ticketCount].seatInfo = new Seat[ticket[ticketCount].groupSize];
}
这是我下面的票类。我正在调用 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
座位.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 * );
}
我得到的错误是没有可以做到这一点的构造函数。 并且没有"="运算符函数。如果您需要更多信息,请告诉我
seatInfo被定义为Seat的指针。
座位*座位信息;
ticket[ticketCount].seatInfo 可以是指向 Seat 实例的指针,但不能是 Seat 实例的数组。
让 seatInfo 指向 Seat 的 1 个实例以查看错误是否仍然存在怎么样?
ticket[ticketCount].seatInfo = new Seat();
Constuctor 被称为 new Class()
,在您的情况下new Seat()
。因此,将 new Seat
后面的 [] 替换为 ()。此外,您正在尝试调用构造函数 Seat(int)
,它没有声明,因此要么使用您声明的 3 个之一,要么声明它。
相关文章:
- C++成员初始化
- c++构造函数成员初始化:传递参数
- C++正确的指针成员初始化
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- WinLamb 错误:成员初始化非法
- 使用其他成员初始化结构的成员?
- C++模板类静态成员初始化
- 解释了构造函数成员初始化列表
- 如何在成员初始化列表中声明共享指针
- C++入门5版:使用get成员初始化另一个与shared_ptr无关的对象
- C++11 默认类成员初始化与初始值设定项列表同时
- 调用非默认构造函数作为成员初始化
- C++模板成员初始化:用右值移动构造,但用左值移动引用
- 类成员初始化C++
- 在成员初始化列表中,我可以创建对列表中不在列表中的成员变量的引用
- C :(不重复)积分静态成员初始化(不仅是声明!),导致链接器错误,原因
- 如何调用成员初始化器列表中参考成员的构造函数
- C 构造函数采用成员初始化器
- 与其他静态const成员初始化静态常量成员
- 静态内联成员初始化顺序