当前位置: 动力学知识库 > 问答 > 编程问答 >

python - Creation of PyTuple in C++ module crashes

问题描述:

Having some trouble with this code. Trying to return a tuple of tuples (coordinates) from a C++ module Im writing. It looks right to me, the dirty list contains two Coords so len is 2, the x and y values of the items in the list are 0,0 and 0,1 respectively. First time Im attempting this so I might very well have misunderstood the docs or something. Any hints?

PyObject* getDirty()

{

int len = dirty.size();

PyObject* tuple = PyTuple_New(len);

int count = 0;

for (std::list<Coord>::iterator i = dirty.begin(); i != dirty.end(); ++i)

{

PyTuple_SET_ITEM(tuple, count, PyTuple_Pack(2, (*i).x, (*i).y));

++count;

}

return tuple;

}

Edit: Oh, forgot to mention, the actual crash is on the PyTuple_Set_ITEM line.

网友答案:

The arguments to PyTuple_Pack, after the first one, must be PyObject pointers.

You might want instead

Py_BuildValue("(ii)", (*i).x, (*i).y)

...assuming the coordinates are actually of type int.

分享给朋友:
您可能感兴趣的文章:
随机阅读: