1

我是 python 和 boost::python 的新手,请原谅我的无知。

我的代码有一个 python - C++ 交互,它是通过 boost::python 完成的。我将 python 字典引用传递给 C++:

C++ 代码:

boost::python::class_<ABC> ("ABC")

    .def("set_input",&ABC::set_input)
    ;

struct ABC {

boost::python::dict* signal_dictionary ;

 void insert_into_dict(int key,CellData cell_data) {

    if (!signal_dictionary->has_key(key) { 
       signal_dictionary->operator[](key)  = cell_data;
   }
 }

void set_input(boost::python::dict &signal_dict_t ) {
     signal_dictionary = &signal_dict_t;
}

我的想法是将 python dict 的地址传递给 C++ 。在 C++ 中填充数据。并在完成填充后在 python 中访问它。函数 insert_into_dict 被间歇性地调用,它在字典中填充数据。但是我收到以下错误: AttributeError:'Boost.Python.function'对象没有属性'_包含_'

这来自: signal_dictionary->has_key(key) 。似乎 boost::python 将 signal_dictionary 读取为 boost::python::function 即使它是 boost::python::dict 。有什么方法可以将其类型转换为 boost::python::dict 。

提前致谢 !!!

4

0 回答 0