2012-08-10 12 views
5

Estoy tratando de portar una clase Python a C++ usando boost :: python con la esperanza de acelerar la ejecución de una aplicación Python (la clase que estoy portando a C++ es responsable de ~ 30% del tiempo de ejecución de las aplicaciones).obteniendo una referencia al self al usar boost :: python

El inicio de la clase Python parecer originales:

class PyClass(object): 
    def __init__(self, child): 
     child.set_parent(self) 
     ... 

¿Cómo replicar esto en un constructor de C++?

si tengo una clase de C++:

class CClass 
{ 
    // to get input args that match the Python class I need 
    CClass(boost::python::object &child) 
    { 
     // but how do I get the boost::python::object self 
     // as I only have *this in C++ ? 
     CClass& c = boost::python::extract<CClass&>(child); 
     c.set_parent(self); 
    } 

    ... 
} 

Gracias, Mark

Respuesta

3

Usted puede utilizar el puntero this través boost::python::ptr(this), como se describe en this answer.

Cuestiones relacionadas