【问题标题】:C++ class - Array Of objectsC++ 类 - 对象数组
【发布时间】:2013-12-06 09:39:52
【问题描述】:

我要设计一个电影院的订票系统,它只有 50 个座位(5 排,每排 10 个座位)
我已经获得了下面的 Cinema 课程,这不应该被修改

class Cinema{
    private:
        Ticket ticket[50]; // not sure what it is going on
    public:
        Cinema(); //constructor
        double purchaseTicket(int); // ticket ID as parameter, check if it is available, if so update it as unavailable. If not, return 0.
        void listAll();
};

这是 Ticket 类

class Ticket{
    private:
        int ID[50]; //ticket ID (correct to store data in array?)
        int price; // ticket price
        // have to provide set and get function for ID and price, have no idea even I've googled on this topic 
        bool available[50]; // availability of ticket
    public:
        Ticket(); //constructor
        bool status(int); // return availability of ticket
        void setAvailable(int); //update status of ticket as available
        void buy(int); //update status of ticket as unavailable
};

这是模拟购票功能的主要功能(给定)

int main(){
    Cinema myCinema;
    myCinema.listAll(); // available seats print "O", otherwise print "X"

    //simulate to purchse ticket 15, 16, 17
    double price = 0;
    price += myCinema.purchaseTicket(15);
    price += myCinema.purchaseTicket(16);
    price += myCinema.purchaseTicket(17);

    cout <<"\nTotal Price: $" << price << endl << endl;

    //print the current status
    myCinema.listAll();

    return 0;
}

谁能告诉我如何使用“Ticket ticket[50];” ?这让我很困扰,许多步骤无法完成
如果 Ticket 类有任何问题,请告诉我

【问题讨论】:

  • 你是说你不能创建一个对象数组吗?如果是这样,您面临什么问题?
  • 你的文字应该解释清楚什么是数组。
  • 我认为这是一个关于设计的问题,而不是关于数组的问题。
  • 没有具体回答这个问题,但您似乎不确定 ID 应该是什么类型。您可以将您的类声明为模板:template&lt;class T&gt; class Ticket{ private: T ID[50]; //ticket ID (correct to store data in array?) ... };

标签: c++ class


【解决方案1】:

每个座位都有一张票。所以有五十张票要买。这是一种有点奇怪的看待事物的方式,但我认为您可以将“票”视为“座位”的同义词。

您的机票舱位错误。请记住,票对象代表个人票(代表个人座位)。因此,一张票有一个 id 和一个可用性。因此票类中的数组是错误的。

class Ticket{
    private:
        int ID; //ticket ID 
        int price; // ticket price
        bool available; // availability of ticket
    public:
        ...
};

setter 和 getter 是微不足道的

int Ticket::getPrice() const { return price; }
void Ticket::setPrice(int p) { price = p; }

可用性类似。

刚刚注意到Cinema::purchaseTicket 返回一个double,为什么我不知道。

【讨论】:

    【解决方案2】:

    您不能直接使用票证数组,因为它是 Cinema 的私有成员。您只能使用课程中提到的购买功能访问它。由于不应修改该类,因此这是唯一的方法。 (注意:ID 成员的 int 数组是错误的,请使用 only int)。

    但是,如果您要修改该类以将 Ticket ticket[50] 设为公开,

    使用示例如下

    myCinema.ticket[0].ID 访问第一张票的 ID(最好使用 char 数组存储票号,否则 just int: int array错了)

    通过点运算符访问您想要的成员。

    【讨论】:

    • Cinema::purchaseTicket 方法中可以清楚地看出,ticket id 是一个整数,而不是一个 char 数组。
    • 尽管如此,他在课堂上的ticket ID旁边的评论中询问了将ID存储为int数组是否正确,这是错误的。它应该只是 int (在他的情况下)
    • 我同意,但您的回答说使用 char 数组,这可能会使 OP 感到困惑。
    • 没错,这是我的建议,以防他的电影课可以被修改。我将编辑我的答案,以使 OP 更清楚。
    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 2017-09-19
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2012-08-19
    • 1970-01-01
    相关资源
    最近更新 更多