Boost Python - 将值附加到python列表

时间:2017-09-13 11:31:47

标签: python c++ boost boost-python

我是C ++的新手。我想从Python更新c ++列表并将其设置为某个函数。 我有以下C ++

#include "stdafx.h"
#include <boost/assign/list_of.hpp>
#include <boost/python/enum.hpp>
#include <boost/foreach.hpp>
#include <boost/python.hpp>
#include <boost/python/list.hpp>
#include <boost/python/def.hpp>
#include <boost/python/module.hpp>
#include <boost/python/return_internal_reference.hpp>
#include <boost\python\copy_const_reference.hpp>
#include <list>

class InfoClass
{
    public:
         std::list<TestInfo> testInfo;
};

class TestClass
{
    public:
          void SomeOperationOnTestInfo(InfoClass info)
          {
          }
};

struct TestInfo

{
TestInfo();
~TestInfo();

struct ResultTimeStamp {

    string resultsDate_;

    string resultsTime_;

};


struct ImageFileNameAndType {

    string imageFileName_;

    string imageFileType_;

};

string Id_;

vector<string> adcMessageList_;

int slotNumber_;}

TestInfo有很多属性。为此添加了一些。 我使用Boost将其暴露给Python,

boost::python::to_python_converter<std::list<TestInfo>, list_to_list<TestInfo> >();

    BOOST_PYTHON_MODULE(BoostPythonTest){
         python::class_<TestClass>("test_class")
         .def("some_operation", &TestClass::SomeOperationOnTestInfo)
          ;
         python::class_<InfoClass>("infos")
         .add_property("test_info", python::make_getter(&InfoClass::testInfo,
         python::return_value_policy<python::return_by_value>()))
         ;
}

我可以使用上面的代码从python中读取列表。但我想从Python(下面)更新列表。我尝试了不同的退货政策和其他类型,但我无法更新清单。

Python代码:

infos.test_infos.append(test_info)
test_class.some_operation(infos)

有人可以帮忙。

由于

0 个答案:

没有答案