从DLL char暴露的C ++ Unordered_map

时间:2013-08-28 00:37:45

标签: c++ dll map export unordered

我有一个编译为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 *密钥的语法。

1 个答案:

答案 0 :(得分:0)

您不应该使用char*作为键,否则,您将在键入时重放指针地址而不是字符串的内容。您可能需要将容器std::unordered_map更改为普通数组[]