这个题文件给了一大堆,其实最关键的只有两个 Listing.h及Group.h
class Listing and class Group
题目总的来说是比较好的,可惜我运行不成功,所以在此只好把要做的事情做好
先看
Class Listing
Class Listing models a collection of advertisements. This class contains a private data member of type vector<Advertisement*>. This vector stores pointers to Advertisement objects.
Notice from the declaration of class Listing that the keyword typedef has been used to create alternate names for types vector<Advertisement*> and vector<Advertisement*>::iterator. Use these alternate names throughout the auction project.
- virtual void add(Advertisement* ptr);
Adds the Advertisement pointer given by the parameter to the vector objects.
- virtual iterator begin();
This returns an iterator to the first Advertisement* in vector objects.
- virtual iterator end();
This returns an iterator to the last Advertisement* in vector objects.
- virtual Advertisement* operator[](const int& number);
This returns the Advertisement pointer whose number equals the parameter number. Note, this is not the same as returning the pointer that exists and at index number.
#ifndef LISTING_H#define LISTING_H#include#include #include #include #include #include "Advertisement.h"using namespace std;class Listing;class Listing {protected: typedef vector Container;public: typedef Container::iterator iterator;protected: Container objects;public: virtual Advertisement* operator[](const int& number); virtual ~Listing() {}; virtual void add(Advertisement* ptr); virtual iterator begin(); virtual iterator end();};#endif
有了上面英文的说明我们可以实现Listing的方法
Listing.cpp
#include "Listing.h"#include#include using namespace std;/* * This returns the Advertisement pointer whose number equals the parameter number. * Note, this is not the same as returning the pointer that exists and at index number. */Advertisement* Listing::operator[](const int& number) { Listing::iterator it; for (it = this->begin(); it != this->end(); it++) { if ((*it)->getNumber() == number) { return *it; } } return NULL;}//Adds the Advertisement pointer given by the parameter to the vector objects.void Listing::add(Advertisement* ptr) { objects.push_back (ptr);}//This returns an iterator to the first Advertisement* in vector objectsListing::iterator Listing::begin() { return objects.begin();}//This returns an iterator to the last Advertisement* in vector objects.Listing::iterator Listing::end() { return objects.end();}
Class Group
Class Group models a collection of clients. This class contains a private data member of type vector<Client*>. This vector stores pointers to Client objects.
As in class Listing, the declaration of class Client uses the keyword typedef to create alternate names for types vector<Client*> and vector<Client*>::iterator. Use these alternate names throughout the auction project.
- virtual void add(Client* ptr);
Adds the Client pointer given by the parameter to the vector objects.
- virtual iterator begin();
This returns an iterator to the first Client* in vector objects.
- virtual iterator end();
This returns an iterator to the last Client* in vector objects.
- virtual Client* operator[](const string& email);
This returns the Client pointer whose object's email equals the parameter email.
#ifndef GROUP_H#define GROUP_H#include#include #include #include #include #include "Client.h"using namespace std;class Group;class Group {protected: typedef vector Container;public: typedef Container::iterator iterator;protected: Container objects;public: Client *operator[](const string& email); virtual ~Group() {}; virtual void add(Client* ptr); virtual iterator begin(); virtual iterator end();};#endif
这样我们也能得到Group.cpp
#include "Group.h"#include#include using namespace std;//This returns the Client pointer whose object's email equals the parameter email. Client* Group::operator[](const string& email) { Group::iterator it; for (it = this->begin(); it != this->end(); it++) { if ((*it)->getEmail() == email) { return *it; } } return NULL;}//Adds the Client pointer given by the parameter to the vector objects.void Group::add(Client* ptr) { objects.push_back (ptr);}//This returns an iterator to the first Client* in vector objects.Group::iterator Group::begin() { return objects.begin();}//This returns an iterator to the last Client* in vector objects.Group::iterator Group::end() { return objects.end();}
这个题就算做完了
Submit only the following.
- Listing.cpp - finished implementations of class Listing and Listing::iterator
- Group.cpp - finished implementation of class Group and Group::iterator