-1

Bag コンテナを紹介されたばかりで、サポートが必要です。バッグコンテナの使用方法を示すコードがいくつか与えられました。問題は、インストラクターから提供されたコードに、私が理解できないエラーが含まれていることです。新しいバッグを作ろうとすると、エラーが表示されます。ここにヘッダーファイルと実際のcppファイルがあります

#include <iostream> // For cout and cin
#include <string> // For string objects
#include "BagInterface.h"// For ADT bag
#include <vector>
#include <string>
using namespace std;
int main()
{
string clubs[] = { "Joker", "Ace", "Two", "Three",
"Four", "Five", "Six", "Seven",
"Eight", "Nine", "Ten", "Jack",
"Queen", "King" };
// Create our bag to hold cards
Bag <string> grabBag;                  //<<<<<<<<<<<<error is on this line
// Place six cards in the bag
grabBag.add(clubs[1]);
grabBag.add(clubs[2]);
grabBag.add(clubs[4]);
grabBag.add(clubs[8]);
grabBag.add(clubs[10]);
grabBag.add(clubs[12]);
// Get friend's guess and check it
int guess = 0;
while (!grabBag.isEmpty())
{
cout << "What is your guess?"
<< "(1 for Ace to 13 for King):";
cin >> guess;
// Is card in the bag?
if (grabBag.contains(clubs[guess]))
{
// Good guess – remove card from the bag
cout << "You get the card!\n";
grabBag.remove(clubs[guess]);
}
else
{
cout << "Sorry, card was not in the bag.\n";
} // end if
} // end while
cout << "No more cards in the bag.\n";
return 0;
}; // end main

およびヘッダーファイル

/** @file BagInterface.h */
#ifndef _BAG_INTERFACE
#define _BAG_INTERFAE
#include <vector>
template<class ItemType>
class BagInterface
{
public:
/** Gets the current number of entries in this bad.
@return The integer number of entries currently in the bag */
virtual int getCurrentSize() const = 0;
/** Sees whether this is empty
@return True if the bag is empty, or false if not */ virtual bool isEmpty() const = 0;
/** Adds a new entry to this bag
@post If successful, newEntry is stored in the bag and
the count of items in the bag has increased by 1
@param newEntry The object to be added as an new entry
@return True is addition was successful, or false if not */
virtual bool add(const ItemType& newEntry) = 0;
/** Removes one occurrence of a given entry from this bag,
if possible
@post If successful, anEntry has been removed from the bag
and the count of items in the bad has decreased by 1.
@param anEntry The entry to be removed
@return True if removal was successful, or false if not */
virtual bool remove(const ItemType& anEntry) = 0;
/** Removes all entries from this bag
@post Bag contains no items, and the count of items is 0 */
virtual void clear() = 0;
/** Counts the number of times a given entry appears in bag.
@param anEntry The entry to be counted
@return The numer of times anEntry appears in the bag */
virtual int getFrequencyOf(const ItemType& anEntry) const = 0;
/** Tests whether this bag contains an given entry
@param anEntry The entry to locate
@return True if bag contains anEntry, or false otherwise */
virtual bool contains(const ItemType& anEntry) const = 0;
/** Empties and then fills a given vector with all entries that
are in this bag
@return A vector containing all the entries in the bag */
virtual vector<ItemType> toVector() const = 0;
}; // end BagInterface

私はこれにこだわっていて、それを機能させる方法がわかりません。ありがとう

4

1 に答える 1

2

「インターフェース」 ( abstract class) が与えられました。

(または、表示されなかった / 含めるのを忘れたBag.hpp/も取得した可能性があります)Bag.cpp

template<class ItemType>
class BagInterface
{
public:
    virtual int getCurrentSize() const = 0;
    virtual bool isEmpty() const = 0;
    virtual bool add(const ItemType& newEntry) = 0;
    virtual bool remove(const ItemType& anEntry) = 0;
    virtual void clear() = 0;
    virtual int getFrequencyOf(const ItemType& anEntry) const = 0;
    virtual vector<ItemType> toVector() const = 0;
}; // end BagInterface

それをインスタンス化し、コメントに従ってメソッドを実装する必要があります!

コメントにリンクされている「ダミー」の実装を参照してください: プログラムの出力

What is your guess?(1 for Ace to 13 for King): 1 
You get the card!
What is your guess?(1 for Ace to 13 for King): 2 
You get the card!
What is your guess?(1 for Ace to 13 for King): 4 
You get the card!
What is your guess?(1 for Ace to 13 for King): 8 
You get the card!
What is your guess?(1 for Ace to 13 for King): 10 
You get the card!
What is your guess?(1 for Ace to 13 for King): 12 
You get the card!
No more cards in the bag.
于 2013-09-16T06:29:23.090 に答える