我正在制作一个扑克游戏,我有一个包含 std::map
的类,用于为扑克牌组中的每张牌分配一个值,并引用其名称。我试图将它作为另一个类的组件作为 static
成员,因为每次创建卡片时我都必须分配一个值,但由于某种原因,当我尝试访问它时我得到了编译器错误 undefined symbol 或重复符号。
我的部分解决方案是将类容器声明为类作用域外的全局变量,但我知道这是一种不好的做法,如果不是这样的话我也有疑问。
extern Baraja baraja;
出于某种原因,当我将其声明为 static
成员或 static const
成员时,碰巧我无法访问 std::map< 的值
或者我得到编译器错误 undefined symbol
或 duplicated symbol
所以我在网络文档中搜索但找不到原因或解决方案我有这个问题。
如何正确创建、初始化和访问类的静态成员?
我认为这是重复的。
#include <string>
#include <unordered_map>
enum class CardColor {Heart};
struct Card
{
CardColor color;
int value;
};
class Game
{
private:
static std::unordered_map<std::string, Card> deck;
public:
Game(){}
};
在你的 .cpp 文件中
std::unordered_map<std::string, Card> Game::deck = std::unordered_map<std::string, Card>
{
std::pair<std::string,Card>{"HeartSeven",{ CardColor::Heart,7}},
std::pair<std::string,Card>{"HeartEight",{ CardColor::Heart,8}}
};