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 Coord
s 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_IT开发者_Go百科EM
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
.
精彩评论