【问题标题】:C++ Unordered Map Exposed From DLL char从 DLL 字符公开的 C++ Unordered_map
【发布时间】:2013-08-28 00:37:44
【问题描述】:

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

【问题讨论】:

标签: c++ dll map export unordered


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多