Я не знаю как пользоваться hash_set
в C ++. Я невероятно новичок в этом языке, поэтому я не понимаю, как делать много вещей. Как мне использовать SGI hash_set
расширение, так что компилятор, наконец, компилируется без ошибок? Вот мой заголовочный файл:
#ifndef _GAME1_H
#define _GAME1_H
#include "card.h"#include "deck.h"#include <ext/hash_set>
const unsigned int TRIALS = 10;
class Game1 {
private:
// Card::Value is defined in card.h as a public enum:
// enum Value { NullCard, Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
std::hash_set<Card::Value> *map; // does this really need to be a pointer?
public:
Game1();
bool isPair();
bool isFlush();
void returnToDeck();
};
#endif
Когда я пытаюсь скомпилировать, я получаю:
In file included from game1.cpp:9:
game1.h:13: error: using-declaration for non-member at class scope
game1.h:13: error: expected `;' before '<' token
make: *** [game1.o] Error 1
unordered_set
hash<int> H;
это актуально?Я нахожусь в тупике, так как буквально не могу понять это после нескольких часов консультаций с Google.
Я считаю, что вы должны объявить map
как
// answering your other question, most likely it doesn't have to be a pointer.
__gnu_cxx::hash_set<Card::Value> map;
(Согласно источник hash_set)
Также, map
не является хорошим именем для переменной, так как это имя стандартного класса. Хотя это не должно быть причиной для ошибок компиляции здесь.