我有一个编译为DLL的C ++项目。我有几个拥有m_dSurveyStore作为成员变量的类。这些地图有std::string
个键和各种值的自定义类。 e.g:
std::unordered_map< std:string , Survey > SurveyStore;
这些类需要从我的DLL中公开以供其他程序使用(包括控制台C ++,还有.Net代码)。当我使用std::string
作为映射键时,我得到编译器警告,“需要让dll接口供类的客户端使用”。我已阅读其他帖子,警告不要暴露使用std类型的接口。
理想情况下,我的地图将是私有成员变量,并且(我认为)不会暴露在DLL之外:
class __declspec(dllexport) Project
{
private:
SurveyStore m_dSurveyStore;
}
我是否应该使用char *
作为我的地图密钥类型,如果我想将这些地图作为成员公开,或者是否有强大的方法来坚持使用std::string
并且只展示该类?如果char *是要走的路,请提供定义char *
密钥的语法。
答案 0 :(得分:0)
您不应该使用char*
作为键,否则,您将在键入时重放指针地址而不是字符串的内容。您可能需要将容器std::unordered_map
更改为普通数组[]
。