0

我如何访问存储在列表中的对象。我不想使用向量或#include <list>. 任何见解都值得赞赏。谢谢!这是我的类定义:

class UnsortedType  // UnsortedType.h   
{
    private:                
        int length, currentPos;
        book info[MAX_ITEMS];


    public:             
        UnsortedType();
        bool IsFull()  const ;
        int  LengthIs()  const ;  // returns length of list
        void RetrieveItem(book& item, bool& found);
        void InsertItem(book item); // adds objects to the list
        void DeleteItem(book item); // deletes objects in the list
        void ResetList(); // resets list to default length -1
        void GetNextItem(book& item); // gets the next object in the list

};

存储在此列表中的是书籍对象。这些对象中包含标题、作者、价格等...我的问题是如何访问每个对象,一旦它们存储在列表中。我希望能够比较存储在列表中的对象的属性。例如每本书的价格。

//main
#include <iostream>
#include "Book.h"
#include "textbook.h"
#include "Name.h"
#include "unsorted.h"

using namespace std;


int main()
{


    book b1("The Exception to the Rulers", "Amy", "Goodman", "Hyperion", 342, "1-4013-0131", 21.95,'N');
    book b2("Who moved my cheese", "Spencer", "Johnson", "Red Tree", 95, "0-399-14446-3", 19.99,  'H');
    book b3("Hellbound Hearts", "Neil", "Gaiman", "Dark Harvest", 326, "978-1-4391-4090-1", 16.00, 'F');

    UnsortedType L1; // creating a list "L1" 

    L1.InsertItem(b1); // populating the list with the first book
    L1.InsertItem(b2); // populating the list with the second book
    L1.InsertItem(b3); // populating the list with the third book


    return 0;
}

这些是 book.h 中的函数

// book.h
enum RelationType
{
    LESS, EQUAL, GREATER
};

class book
{
private: 
    string title; 
    Name aurthor; 
    string publisher; 
    string ISBN; 
    int pages; 
    float price; 
    char code; 


public:
    RelationType ComparedTo(book) const;
    class negativeNumber{};
    void setTitle(string);
    void setAurthor(string f, string l);
    void setPublisher(string);
    void setISBN(string);
    void setPages(int);
    void setPrice(float);
    void setCode(char);
    string getTitle();
    Name getAurthor();
    string getPublisher();
    string getISBN();
    int getPages();
    float getPrice();
    char getCode();
    void PrintBook();
    book(); //default constructor
    book(string, string, string, string, int, string, float, char); //constructor with args
    ~book(); //Destructor
};
4

1 回答 1

1
Book& UnsortedType::operator[](const int i))
{
  //check if array is in bounds
  return info[i];
}

这将允许您使用未排序的 L1[3] 类访问书籍对象;

或者在您的情况下,这是一个访问每个对象并确定书籍最低价格的示例:

double UnsortedType::FindLow()
{
    double low = 9999;      //used to store lowest value
    for(int i = 0; i < length; i++) //loop through array
    {
        if(info[i].price < low) //if the price of this book is lower than the current lowest
            low = info[i].price;
                //set low to new low
    }
    return low;
}
于 2012-11-15T21:31:22.313 回答