c++中的静态映射初始化
static map initialization in c++
有许多类似的问题,实际上我从其他几个帖子中编写了以下代码。不幸的是,我仍然有一个我似乎无法破解的错误-尽管我在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];
}
From else where in code我有这个代码:
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:_devtemptestmain.obj Refactor01
任何想法吗?
您缺少table
的定义。在代码的某个地方应该写:
map<RegionCodeEnum, DeviceCodeEnum> LookupTable::table;
就像你对constructor cons
做的那样
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 在未初始化映射的情况下,将值插入到映射的映射中
- 在C++中初始化向量映射的最有效方法
- 初始化之前使用的静态映射
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 从另一个常量标准::映射初始化一个常量标准::映射的一部分
- 生成器用于提升::融合::使用不可复制的值类型进行映射初始化
- 映射的映射集的映射初始化错误
- std::映射初始化后的change key_comp
- 静态映射初始化
- 缺少用于映射初始化的构造函数
- 其中是在以下程序中创建的用于映射初始化的临时变量
- C++模板静态映射初始化
- 静态C++映射初始化错误C2552:无法使用初始值设定项列表初始化非聚合
- 静态映射初始化函数错误
- c++中的静态映射初始化
- 在c++中映射初始化以实现尝试
- 无序映射初始化失败
- 使用包含另一个类的函数指针的映射初始化
- STL映射初始化