【发布时间】: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 * 键的语法。
【问题讨论】:
-
您在查看 SO 中的答案时是否看到了这一点? support.microsoft.com/default.aspx?scid=KB;EN-US;168958
标签: c++ dll map export unordered