【问题标题】:C++ Linked List of ObjectsC++ 对象链表
【发布时间】:2017-05-06 02:11:52
【问题描述】:

我有一个类,它的对象必须添加到链表中。对象仅在非成员函数中创建。我不得不承认,链接列表对我来说毫无意义,是的,我已经阅读了这个论坛上的其他问题,但仍然无法弄清楚。

我将如何进行 1. 创建这个链表 2. 每次创建一个对象时都向这个列表添加一个对象 3. 能够删除列表中的每个节点?

这是我的课:

class ShirtOrder
{
    friend ostream& operator<<(ostream &os, const ShirtOrder &rhsObj);

private:
    // the data members below are required (you may change identifiers)
    // there is no need for additional data members
    int orderYear, orderMonth, orderDay;
    char printMethod; // 's', 'i', or 'e'
    string message;
    int mediums; // number of medium shirts ordered
    int larges; // number of large shirts ordered
    int xls; // number of XL shirts ordered
    string shirtColor;
    string inkColor;
    string orderID;
    string region;
    string nameAndEmail;

    ShirtOrder* next; // new for P5

public:
    ShirtOrder(); // default constructor

    ShirtOrder(int orderYear, int orderMonth, int orderDay,
               char printMethod, string message, int mediums, int larges, int xls,
               string shirtColor, string inkColor, string orderID,
               string region, string nameAndEmail,
               ShirtOrder *soPtr = NULL);

    ShirtOrder(const ShirtOrder &otherObj);

    ~ShirtOrder(); // destructor                      // New for P5 (may not be in-line)

    ShirtOrder* getNext() const {return next;}        // New for P5 (may be in-line)

    void setNext(ShirtOrder* soPtr) {next = soPtr;}   // New for P5 (may be in-line)

    double getBlankCost() const;
    double getPrintingCost() const;
    double getTotalCost() const;

    int    getLetterCount() const;
    char   getPrintMethod() const {return printMethod;}
    int    getOrderYear() const {return orderYear;}
    int    getOrderMonth() const {return orderMonth;}
    int    getOrderDay() const {return orderDay;}
    int    getMediums() const {return mediums;}
    int    getLarges() const {return larges;}
    int    getXls() const{return xls;}

    string getShirtColor() const {return shirtColor;}
    string getInkColor() const {return inkColor;}
    string getOrderID() const {return orderID;}
    string getRegion() const {return region;}
    string getNameAndEmail() const {return nameAndEmail;}
    string getMessage() const {return message;}

    void  setOrderYear (int orderYear) {this->orderYear = orderYear;}
    void  setOrderMonth (int orderMonth) {this->orderMonth = orderMonth;}
    void  setOrderDay (int orderDay) {this->orderDay = orderDay;}
    void  setPrintMethod (char printMethod) {this->printMethod = printMethod;}
    void  setMessage (string message) {this->message = message; }
    void  setMediums (int mediums) {this->mediums = mediums;}
    void  setLarges (int larges) {this->larges = larges;}
    void  setXls (int xls) {this->xls = xls;}
    void  setShirtColor (string shirtColor) {this->shirtColor = shirtColor;}
    void  setInkColor (string inkColor) {this->inkColor = inkColor;}
    void  setOrderID (string orderID) {this->orderID = orderID;}
    void  setRegion (string region) {this->region = region;}
    void  setNameAndEmail (string nameAndEmail) {this->nameAndEmail = nameAndEmail;}

};

所以说这个类的一个对象是在一个非成员函数中创建的。如何创建此类对象的列表,并将每个对象添加到列表的末尾?谢谢!

【问题讨论】:

  • 如何创建此类对象的列表 -- std::list&lt;ShirtOrder&gt; -- 将每个对象添加到列表的末尾 -- @ 987654323@
  • 我需要它是一个链表,特别是。虽然我感谢你的回答!
  • std::list 是一个链表。如果这应该是某种自制的链表,为什么要通过创建ShirtOrder 类来混淆?首先创建一个通用链表类,对其进行测试,然后在您的ShirtOrder 类中使用它。
  • 非会员builder函数的签名是要给我们看,还是我们自己补?
  • 为了清除我的评论,我需要列表中的每个节点都可以被前一个节点的“下一个”指针访问...

标签: c++ class object linked-list


【解决方案1】:

在你的私人领域创建一个std::lib&lt;dataType&gt; mylist;

然后你只需插入你想要的项目。 mylist.insert(whateverItem);

这有帮助吗?

【讨论】:

  • 对了,我推荐Qt。它拥有令人惊叹的库,让这种方式变得更容易。
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2015-12-02
  • 2012-11-15
  • 2016-08-08
  • 1970-01-01
相关资源
最近更新 更多