这个问题已经在这里有一个答案:
我正在做的扑克游戏,我有其中包含std::map
分配一个值扑克甲板提到它的名字在每个卡类。我试图把它作为其他类作为static
成员的组成部分,因为我不得不每次创建银行卡时,分配一个值,但由于某些原因,当我试图访问它,我得到的编译器错误未定义的符号或复制的符号。
我的部分解决方案已经宣布级集装箱作为外部类范围的全局变量,但我知道这是一个不好的做法,如果不是有反正我的疑问。
extern Baraja baraja;
出于某种原因,当我把这个声明为static
成员或static const
成员,碰巧我无法访问到std::map
的值或者我得到这么为我寻觅的Web文档和找不到我有一个原因或解决方案编译器错误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}}
};