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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void 	Set (const std::string &str);
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.

Voici le bout de code que j'ai écrit pour interfacer la fonction.
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;
}
Voilà.
Merci.

Bouba