0

我不知道如何hash_set在 C++ 中使用。我对这种语言非常陌生,所以我不明白如何做很多事情。如何使用 SGIhash_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
  1. 我不知道“类范围内的非成员使用声明”是什么意思。
  2. 为什么编译器抱怨“预期的`;' 当我基本上遵循与SGI 在其网站上的相同示例时,在 '<' token" 之前?
  3. 我正在使用 gcc 3.4.6,所以我不能使用unordered_set
  4. 我看过简单的 C++ hash_set 示例,但我不明白他们为什么使用hash<int> H;这相关吗?

我陷入了僵局,因为在咨询谷歌数小时后我真的无法弄清楚这一点。

4

1 回答 1

0

我相信你应该声明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这不是变量的好名称,因为它是标准类的名称。虽然它不应该是这里编译错误的原因。

于 2014-11-12T22:31:26.593 回答