【发布时间】:2015-08-14 21:57:48
【问题描述】:
我目前正在研究一个需要在值的友好名称和值本身之间来回转换的 DLL。由于这段代码在整个代码库中的许多地方都使用过,我想尽量保持简单,并在一个函数或对象中,所以我只需要声明一次。
从我的阅读来看,CMap 似乎是完成这项工作的工具,但我似乎无法发现任何模板参数的组合都可以无错误地编译。
我的值是CString 和int。我尝试了以下定义:
CMap<int, int, CString, CString> encodermap;
编译,但是当我尝试添加一个值时:
encodermap["Encoder 1"] = 0;
我收到以下编译器错误:
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2501: 'encodermap' : missing storage-class or type specifiers
error C2040: 'encodermap' : 'int []' differs in levels of indirection from 'CMap<KEY,ARG_KEY,VALUE,ARG_VALUE>'
我尝试将CMap 更改为:
CMap<CString, CString, int, int> encodermap;
但我得到了同样的四个错误。
我确定我一定错过了什么,但我不知道是什么。
由于这项工作使用了 SDK,我需要 VS2003
【问题讨论】:
标签: c++ visual-studio mfc