Неупорядоченная карта 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 * ключ.

0

Решение

Вы не должны использовать char* в качестве ключа, в противном случае вы будете воспроизводить адрес указателя в качестве ключа, а не содержимое строки. Возможно, вам придется изменить свой контейнер std::unordered_map в нормальный массив [],

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]