所以我有一个类定义为
template<class ItemType>
class Bag : public BagInterface<ItemType>
{
public:
Bag();
Bag(const ItemType &an_item); // contrusctor thats constructs for a signal item.
int GetCurrentSize() const;
bool IsEmpty() const;
bool Add(const ItemType& new_entry);
bool Remove(const ItemType& an_entry);
void Clear();
bool Contains(const ItemType& an_entry) const;
int GetFrequencyOf(const ItemType& an_entry) const;
vector<ItemType> ToVector() const;
private:
int GetIndexOf(const ItemType& target) const;
static const int kDefaultBagSize_ = 6;
ItemType items_[kDefaultBagSize_]; // array of bag items
int item_count_; // current count of bag items
int max_items_; // max capacity of the bag
我的教授特别要求我们使用函数
void DisplayBag(const Bag<ItemType> &a_bag);
要在包中显示内容,问题是我不知道如何让它工作。 例如,在我的int main中我有
Bag<string> grabBag;
grabBag.Add(1);
Display(grabBag);
然后在我的显示功能中。
void DisplayBag(const Bag<ItemType> &a_bag)
{
int j = 6;
for(int i = 0; i < j; i++)
{
cout << a_bag[i] << endl;
}
}
我尝试以多种方式搞乱这段代码而没有任何作用。我有
void DisplayBag(const Bag<ItemType> &a_bag);
在我的int main()和函数本身之前声明它在类实现的相同头文件中编写。
矢量函数
template<class ItemType>
vector<ItemType> Bag<ItemType>::ToVector() const
{
vector<ItemType> bag_contents;
for (int i = 0; i < item_count_; i++)
bag_contents.push_back(items_[i]);
return bag_contents;
} // end toVector
答案 0 :(得分:3)
为了显示Bag
的内容,函数DisplayBag
必须能够找出 的内容。我能看到的唯一功能就是vector<ItemType> ToVector() const;
。从此函数中获得vector<ItemType>
之后,您应该能够通过迭代vector<ItemType>
的元素来显示数据。 (您将能够使用[i]
语法,因为vector
定义了operator[]
。)
当然,与此同时,您必须在新数据结构中对Bag
中的所有内容进行额外复制,以便显示它。
我真诚地希望这次演习的目的是为你提供一个对象课程 界面设计不良的后果,以及你的教授计划展示的 稍后您将如何编写此接口。