在 C++ 中创建 PyTuple模块崩溃
这段代码遇到一些问题。尝试从我正在编写的 C++ 模块返回元组的元组(坐标)。在我看来是正确的,dirty
列表包含两个 Coord
,因此 len
为 2,x
和 <列表中项目的 code>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
行。
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_ITEM
line.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一个参数之后的
PyTuple_Pack
参数必须是PyObject
指针。您可能想要
...假设坐标实际上是
int
类型。The arguments to
PyTuple_Pack
, after the first one, must bePyObject
pointers.You might want instead
...assuming the coordinates are actually of type
int
.