1

我正在学习C++。我遇到了一个相当有趣的问题,我希望将他们的食物托盘存储在 Customer 类中。基本的想法是一个顾客可以有一个由饮料和食物组成的托盘。

我最初的想法是使用以下课程。

class Customer
{
private:
    std::string firstName;
    std::string lastName;
    int tablenumber;
    //LinkList<Tray> myTray = new LinkList<Tray>();
    //or
    //LinkList<Tray> myTray;
public:
    Customer();
    Customer(std::string sFirstName, std::string sLastName, 
        int sTableNumber);
    ~Customer(void);

处理让对象在自身内部存储 Linklist 的正确方法是什么?那么在调用客户构造函数时,他们可以添加订单吗?

4

3 回答 3

1

听起来您希望您的客户能够在食品托盘中放置许多食品。因此,持有某种食品容器(不一定是链表)并提供Customer类型方法来添加或删除食品是有意义的。这个容器将代表您正在谈论的托盘:

class Customer
{
private:
    std::string firstName;
    std::string lastName;
    LinkList<FoodItem> myTray;
public:
    AddFoodItemToTray(const FoodItem& item) { myTray.push(item);}
    RemoveFoodItemFromTray(const FoodItem& item) { myTray.remove(item=; } 
};

如果您希望您的Customer类可以从元素列表中初始化,那么您只需为此添加一个构造函数:

explicit Customer(const LinkList<FoodItem>& tray) : myTray(tray) {}

最好将餐桌编号留给客户,让某种餐桌类知道它拥有哪些顾客。

于 2012-12-01T17:04:52.713 回答
0

在讨论细节之前,让我先解决一个更基本的问题。

考虑作为解决方案 并不好。LinkList<Tray> myTray = new LinkList<Tray>();

这样想, 每个客户都会有自己的托盘。因此,您需要为每位客户提供一个新托盘。

请记住,类只是一个蓝图。

因此,LinkList<Tray> myTray;在对象的构造函数中,每次创建客户时分配一个新托盘。它看起来像:

Customer()
{
//other construction 
 myTray = new LinkList<Tray>();
}

请注意,您现在必须像LinkList<Tray> * myTray;要动态分配列表一样声明它。

现在您可以myTray根据您的要求使用。例如。你可能喜欢打电话 myTray.addToList(MyNewItem)之类的。

假设

当每个对象共享相同的值时,您将它们声明为static. 但是你提到within a Customer class 了他们 food tray,所以我假设这里不是这种情况。

于 2012-12-01T16:56:32.660 回答
0

编写另一个以托盘类型对象的链表作为参数的构造函数。

于 2012-12-01T16:56:58.623 回答