Вопрос

Возникли некоторые проблемы с этим кодом.Пытаюсь вернуть кортеж кортежей (координаты) из модуля 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top