Bonjour, je dois interfacer des classes C++ afin de pouvoir les utiliser dans Python. J'ai heureusement peut de problèmes, mais j'ai un problème pour interfacer des fonctions C++ qui prennent une référence comme paramètre.
La fonction à interfacer est la suivante
Le problème est que le paramètre passé est succeptible d'être modifié, mais dans la fonction d'intefacage je n'arrive pas à modifier ce paramètre passé dans Python.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void Set (const std::string &str);
Voici le bout de code que j'ai écrit pour interfacer la fonction.
Voilà.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 /* Interfaçage de la fonction Set */ static PyObject * StringStreamPython_Set(PyObject * self, PyObject *args) { char* cstr; // Parsing des arguments if(!PyArg_ParseTuple(args, "s", &cstr)) return NULL; const std::string str = cstr; ((StringStreamPython*)self)->obj->Set(str); /* le paramètre de la fonction Set était passé par référence, il est donc possible qu'il ait été modifié, on affecte donc la chaîne str à la chaîne Python passée en argument */ //char* cstr2 = (char*)str.c_str(); // Pour tester, mais la chaîne passé dans Python n'est quand // même pas modifiée char* cstr2 = "aa"; /* args est un Tuple Python */ PyObject* elem = PyTuple_GetItem(args, 0); elem = Py_BuildValue("s", (const char*)cstr2); Py_INCREF(Py_None); return Py_None; }
Merci.
Bouba
Partager