Aquí podría ser tu PUBLICIDAD


Swig y refrence contadas clases de c ++

votos
2

Muchos de mis objetos c ++ implementan conteo de repetición a través de métodos AddRef y FreeRef. Si FreeRef reduce la cuenta de refrencia a 0, entonces el objeto se borra a sí mismo.

Todos los métodos que devuelven un objeto contado de refrencia no incrementan la refrencia. Esto lo hace simple ya que un puntero inteligente puede simplemente incrementar el número de conteo que recibe un puntero y disminuir el conteo cuando ya no lo refinancia. p.ej:

template<class T> FlPtr
{
    T *p;
public:
    FlPtr(T *p=0):p(p){if(p)p->AddRef();}
    ~FlPtr(){if(p)p->FreeRef();}

    FlPtr<T>& operator =(T *newP)
    {
        if(newP)newP->AddRef();
        if(p)p->FreeRef();
        p = newP;
        return *this;
    }
    operator T*(){return p;}
};

Estaba pensando en mayby ​​si pudiera decirle a SWIG que simplemente usara mi puntero inteligente existente internamente para estos objetos que pueden funcionar, pero no estoy seguro de cómo hacerlo :(

Publicado el 12/03/2009 a las 21:12
fuente por usuario Fire Lancer
En otros idiomas...        العربية       

1 respuestas

votos
1

Eche un vistazo a la documentación de SWIG . Básicamente, si tiene una clase Fooy desea envolverla con un puntero inteligente Bar, haga esto:

%ignore Foo;
class Foo {
    ...
};

class Bar {
public:
    Foo *operator->();
    ...
}

Ahora, cuando intentes acceder a los miembros de una instancia de Bar, internamente usará Foo, pero esto será completamente transparente.

Respondida el 13/04/2009 a las 03:43
fuente por usuario Zifre


Aquí podría ser tu PUBLICIDAD