Проблема с передачей python dict для c ++ как map - PullRequest
0 голосов
/ 17 января 2019

У меня есть класс c ++, экспортированный в python, используя

class_<std::map<std::string, std::string> >("str2str_map")
        .def(map_indexing_suite< std::map<std::string, std::string> > ());

class_< MyClass, boost::noncopyable >("MyClass")
    .def(init<>())
    .def("process", &MyClass::process )

с сигнатурой функции,

void MyClass::process(std::map<std::string, std::string> & queryMap)

Однако, когда я пытаюсь позвонить со стороны Python, я получаю ошибку,

Boost.Python.ArgumentError: типы аргументов Python в MyClass.process (MyClass, dict, function, int) не соответствует сигнатуре C ++: процесс (MyClass {lvalue}, std :: map, std :: allocator>, std :: __cxx11 :: basic_string, std :: allocator>, станд :: меньше, std :: allocator>>, std :: allocator, std :: allocator> const, станд :: __ cxx11 :: basic_string, std :: allocator>>>> {lvalue})

Что мне нужно сделать, чтобы он работал правильно?

...