Какова моя функция должна вызывать?

Итак, у меня есть класс, определенный как таковой

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 у меня есть

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

Решение

Для отображения содержимого Bag, функция DisplayBag должен быть в состоянии выяснить, что содержимое являются. Единственная функция, с помощью которой я могу это сделать, это vector<ItemType> ToVector() const;, Как только вы получили vector<ItemType> из этой функции вы сможете отображать данные, просматривая элементы vector<ItemType>, (Вы будут быть в состоянии использовать [i] Синтаксис тогда, потому что vector определяет operator[].)

Конечно, в то же время вам пришлось сделать дополнительную копию всего в Bag в новой структуре данных просто для того, чтобы отобразить ее.

Я искренне надеюсь, что цель этого упражнения — дать вам наглядный урок
последствия плохого дизайна интерфейса, и что ваш профессор планирует показать
Вы позже, как этот интерфейс должен быть написано

3

Другие решения


По вопросам рекламы [email protected]