题
这段代码遇到一些问题。尝试从我正在编写的 C++ 模块返回元组的元组(坐标)。对我来说看起来很正确 dirty
列表包含两个 Coord
是这样 len
为 2,则 x
和 y
列表中项目的值为 0,0
和 0,1
分别。我第一次尝试这样做,所以我很可能误解了文档或其他内容。有什么提示吗?
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;
}
编辑: 哦,忘了说了,真正的崩溃是在 PyTuple_Set_ITEM
线。
解决方案
论据 PyTuple_Pack
, ,在第一个之后,必须是 PyObject
指针。
你可能想要
Py_BuildValue("(ii)", (*i).x, (*i).y)
...假设坐标实际上是类型 int
.
不隶属于 StackOverflow