如何正确地创建,初始化和访问类的静态成员? [重复]

问题描述 投票:0回答:1

这个问题已经在这里有一个答案:

我正在做的扑克游戏,我有其中包含std::map分配一个值扑克甲板提到它的名字在每个卡类。我试图把它作为其他类作为static成员的组成部分,因为我不得不每次创建银行卡时,分配一个值,但由于某些原因,当我试图访问它,我得到的编译器错误未定义的符号或复制的符号。

我的部分解决方案已经宣布级集装箱作为外部类范围的全局变量,但我知道这是一个不好的做法,如果不是有反正我的疑问。

extern Baraja baraja;

出于某种原因,当我把这个声明为static成员或static const成员,碰巧我无法访问到std::map的值或者我得到这么为我寻觅的Web文档和找不到我有一个原因或解决方案编译器错误undefined symbolduplicated symbol这个问题。

如何正确地创建,初始化和访问类的静态成员?

c++ c++11 cocos2d-x cocos2d-x-3.x
1个回答
1
投票

我认为这是重复的。

#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}}
};
© www.soinside.com 2019 - 2024. All rights reserved.