Неупорядоченная карта 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 в нормальный массив [],

Другие вопросы по тегам