Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+;中追加整数时出错+;boostpython列表_C++_Python 2.7_Boost Python - Fatal编程技术网

C++ 在c+;中追加整数时出错+;boostpython列表

C++ 在c+;中追加整数时出错+;boostpython列表,c++,python-2.7,boost-python,C++,Python 2.7,Boost Python,我编写了这段代码,但它不起作用 #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); re

我编写了这段代码,但它不起作用

#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;}
#包括
名称空间bp=boost::python;
int main(int argc,字符**argv){
列表点;
int-one=1;
int 2=2;
int三=3;
点数。附加(一);#crach!!
附加(两个);
附加(三);
返回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;}
#包括
名称空间bp=boost::python;
int main(int argc,字符**argv){
Py_Initialize();//此部件
列表点;
int-one=1;
int 2=2;
int三=3;
点数。附加(一);#crach!!
附加(两个);
附加(三);
Py_Finalize();//此零件
返回0;}

从文档中,它看起来像一个模板方法。所以,你可以试试

 points.append<int>(one);
points.append(一个);

<代码> > p>我认为你应该使用导出代码中的“代码>升迁::Python::列表< /C>”,而不是直接从C++程序中。原因很简单:
boost::python::list
是一个围绕python list对象的包装器,要使用它,您需要一个python解释器,当您尝试从
main
方法对列表进行操作时,该解释器不可用

下面是一个工作示例:

#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);
}

非常感谢,但这并不能解决问题。。。文档在哪里?这没有意义,因为模板参数无论如何都会被推导出来,即使你不在callsite中提及。你会得到什么错误?这是真的,但我制作了一个主程序来调试这些函数。我认为你有两个选择:要么通过调用Python进行调试,要么嵌入Python解释器。
>>> import listtest
>>> print listtest.getlist()
[1, 2, 3]