我是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)
有人可以帮忙。
由于