C++ 对象链表
Posted
技术标签:
【中文标题】C++ 对象链表【英文标题】:C++ Linked List of Objects 【发布时间】: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() constreturn 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<ShirtOrder>
-- 将每个对象添加到列表的末尾 -- @ 987654323@
我需要它是一个链表,特别是。虽然我感谢你的回答!
std::list
是一个链表。如果这应该是某种自制的链表,为什么要通过创建ShirtOrder
类来混淆?首先创建一个通用链表类,对其进行测试,然后在您的ShirtOrder
类中使用它。
非会员builder函数的签名是要给我们看,还是我们自己补?
为了清除我的评论,我需要列表中的每个节点都可以被前一个节点的“下一个”指针访问...
【参考方案1】:
在你的私人领域创建一个std::lib<dataType> mylist;
然后你只需插入你想要的项目。 mylist.insert(whateverItem);
这有帮助吗?
【讨论】:
对了,我推荐Qt。它拥有令人惊叹的库,让这种方式变得更容易。以上是关于C++ 对象链表的主要内容,如果未能解决你的问题,请参考以下文章