Frage

einige Probleme mit diesem Code zu haben. Der Versuch, ein Tupel von Tupeln (Koordinaten) von einem C ++ Modul IM Schreib zurückzukehren. Es sieht richtig zu mir, die dirty Liste enthält zwei Coords so len 2 ist, die x und y Werte der Elemente in der Liste sind 0,0 und 0,1 sind. Zum ersten Mal Im Versuch, diese so dass ich sehr gut die Dokumentation oder etwas haben könnte falsch verstanden. Irgendwelche Hinweise?

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, vergessen zu erwähnen, der tatsächliche Absturz ist auf der PyTuple_Set_ITEM Zeile

War es hilfreich?

Lösung

Die Argumente für PyTuple_Pack, nach dem ersten, muss PyObject Zeiger sein.

Sie könnten stattdessen wollen

Py_BuildValue("(ii)", (*i).x, (*i).y)

... vorausgesetzt, die Koordinaten tatsächlich vom Typ int sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top