初始化类的聚合成员

时间:2016-02-13 17:13:52

标签: c++

我希望能够在我的方法中初始化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 * );
}

我得到的错误不是可以做到的构造函数。并且没有' ='操作员功能。如果您需要更多信息,请告诉我

2 个答案:

答案 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个中的一个,要么声明它。