Неупорядоченная карта C++, доступная из DLL char
У меня есть проект C++, который компилируется как DLL. У меня есть несколько классов, которые обладают 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 *
ключ.
1 ответ
Вы не должны использовать char*
в качестве ключа, в противном случае вы будете воспроизводить адрес указателя в качестве ключа, а не содержимое строки. Возможно, вам придется изменить свой контейнер std::unordered_map
в нормальный массив []
,