1

私はC++を学んでいます。カスタマークラス内にフードトレイを保管したいという、かなり興味深い問題に遭遇しました。基本的な考え方は、1人の顧客が飲み物と食べ物で構成されるトレイを持つことができるということです。

私の当初の考えは、次のクラスを使用することでした。

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);

オブジェクトにリンクリストを格納させるための正しい方法は何でしょうか?では、顧客コンストラクターを呼び出すと、注文を追加することができますか?

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 に答える