我制作了这段代码并且无效
#include <boost/python.hpp>
namespace bp = boost::python;
int main(int argc, char **argv) {
bp::list points;
int one = 1;
int two = 2;
int three = 3;
points.append(one); #crach!!
points.append(two);
points.append(three);
return 0;}
这就是为什么“append”不接受整数而直接接受哪种方法的原因?
编辑
解决方案是:
#include <boost/python.hpp>
namespace bp = boost::python;
int main(int argc, char **argv) {
Py_Initialize(); //this part
bp::list points;
int one = 1;
int two = 2;
int three = 3;
points.append(one); #crach!!
points.append(two);
points.append(three);
Py_Finalize(); //this part
return 0;}
答案 0 :(得分:2)
我认为您应该在导出的模块中使用boost::python::list
,而不是直接从C ++程序中使用boost::python::list
。原因很简单:main
是Python列表对象的包装器,要使用它,您需要一个Python解释器,当您尝试使用#include <boost/python.hpp>
namespace bp = boost::python;
bp::list getlist() {
bp::list points;
int one = 1;
int two = 2;
int three = 3;
points.append(one);
points.append(two);
points.append(three);
return points;
}
BOOST_PYTHON_MODULE(listtest) {
using namespace boost::python;
def("getlist", getlist);
}
方法操作列表时,该解释器不可用
这是一个有效的例子:
getlist
编译此模块并运行>>> import listtest
>>> print listtest.getlist()
[1, 2, 3]
函数表明一切都按预期工作:
{{1}}
答案 1 :(得分:0)
从文档中看,它看起来像一个模板方法。所以,你可以尝试
points.append<int>(one);