这段代码遇到一些问题。尝试从我正在编写的 C++ 模块返回元组的元组(坐标)。对我来说看起来很正确 dirty 列表包含两个 Coord是这样 len 为 2,则 xy 列表中项目的值为 0,00,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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top