0

我有一个编译为 DLL 的 C++ 项目。我有几个拥有 m_dSurveyStore 作为成员变量的类。地图有std::string键和各种自定义类的值。例如:

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 *键的语法。

4

1 回答 1

0

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

于 2013-08-28T00:44:53.307 回答