Wie Objekt am besten registrieren
-
Hi!
Ich habe ein Problem, das bekomme ich nicht gelöst, und eventuell hat einer von euch eine Idee. Ich nutze ein SDK womit man ein Objekt registrieren kann, wovon später Instanzen erstellt werden können, wenn das App ein Objekt dieser Klasse möchte.
Beispiel: RegisterObject(void* p) - Diese Methode nimmt einen Pointer zu einer statischen Methode entgegen, damit das Programm später weiß, welche Funktion ein neues Objekt zurückgibt. Beispiel RegisterObject(MyClass::GetNewObject)
Jetzt habe ich eine Python Erweiterung geschrieben und sowohl die Klasse von der auch MyClass ableitet (BigObject) und die Funtion RegisterObject() gewrappt.
Das heißt, der User programmiert in python eine Klasse, leitet von der gewrappten Klasse ab und übergibt auch diese Klasse in python als argument an die Funktion "register".
Soweit so gut, jetzt bin ich an folgendem Punkt. Nach PyArgParseTuple steht mir die Klasse die der User geschrieben hat also zur Verfügung und ich könnte direkt danach ein Objekt erzeugen, womit auch das Programm was anfangen kann, denn dann caste ich "obj" noch, und erhalte als Rückgabewert die Adresse zu einem neuen Objekt.
Nur an dieser Stelle brauch ICH gar kein Objekt.. Ich muss irgendwas übergeben, dass das Programm weiß, wo es ein neues herbekommt. Ich hatte daran gedacht obj in einer neuen Klasse als Member zu speichern und der Klasse eine Methode zu verpassen die ein neues Objekt zurückgibt. Dan hätte ich zwischen PyArg_ParseTple und Register davon ein Objekt erzeugt, obj übergeben, und Register dann die Adresse der Instanz und der Methode übergeben.. Ich weiß nicht mehr weiter, hat einer eine Idee was ich tun kann?
danke

PyObject* pyRegister(PyObject* self, PyObject* pArgs) { PyObject *obj; if (!PyArg_ParseTuple(pArgs, "O", &obj)) goto Error; Register(<was soll ich hier reintun?); PY_RETURN_NONE; }
-
Hi!
Hat irgendwer eine Idee? Ich versuche schon seit Tagen dieses Problem in den Griff zu bekommen.
Danke

-
Was soll das denn?:
goto Error;
-
Hoppala, das ist noch ein Überrest vom gekürzten Code.
Da war noch eine Sprungmarke drin, kannst du dir wegdenken.
-
Hi! Letzer Versuch, hat jemand eine Idee? Danke
