gpt4 book ai didi

c++ - C++中的静态 map 初始化

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:04 27 4
gpt4 key购买 nike

有很多类似的问题,实际上我从其他几个帖子中编写了以下代码。不幸的是,我仍然有一个我似乎无法破解的错误 - 尽管我在 15 年前做了很多 C++ 开发。

我想用 map 制作一个简单的静态查找表。

这是目前为止的代码(代码 css 似乎渲染得不是很好):

enum RegionCodeEnum
{
One,
Two,
Three
};

enum DeviceCodeEnum
{
AAA,
BBB,
CCC
};

class LookupTable
{
friend class constructor;

struct constructor
{
constructor()
{
table[One] = AAA;
table[Two] = AAA;
table[Three] = CCC;
}
};

static constructor cons;

public:
LookupTable(void);

static DeviceCodeEnum GetDeviceFromRegion(RegionCodeEnum RegionCode);

private:
static map<RegionCodeEnum, DeviceCodeEnum> table;
};

LookupTable::constructor LookupTable::cons;

LookupTable::LookupTable(void)
{

}

DeviceCodeEnum LookupTable::GetDeviceFromRegion(RegionCodeEnum RegionCode)
{
return table[RegionCode];
}

从代码中的其他地方我得到了这段代码:

DeviceCodeEnum code= LookupTable::GetDeviceFromRegion(One);

我得到的编译错误是:

error LNK2001: unresolved external symbol "private: static class std::map<enum RegionCodeEnum,enum DeviceCodeEnum,struct std::less<enum DeviceCodeEnum>,class std::allocator<struct std::pair<enum RegionCodeEnum const ,enum DeviceCodeEnum> > > LookupTable::table" (?table@LookupTable@@0V?$map@W4RegionCodeEnum@@W41@U?$less@W4DeviceCodeEnum@@@std@@V?$allocator@U?$pair@$$CBW4DeviceCodeEnum@@W41@@std@@@3@@std@@A)   C:\_dev\temp\test\main.obj  Refactor01

有什么想法吗?

最佳答案

您缺少 table 的定义。在你的代码中某处应该说:

map<RegionCodeEnum, DeviceCodeEnum> LookupTable::table;

就像你为 constructor cons 所做的那样。

关于c++ - C++中的静态 map 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com