[C con Clase] Problema con Clase.

Programante programante en gmail.com
Mie Dic 10 01:37:34 CET 2008


Zaka Elab escribió:
> Tengo otra cuestión que también está relacionada con este tema:
>
> Si tenemos una función del siguiente tipo:
>
> a( void (*func)(void));
>
> Y un objeto del siguiente tipo:
>
> class D{
>     void func(void);
> };
>
> int main(){
>     D *d;
>
>     d = new D;
>
>     //¿Se puede hacer lo siguiente?
>     a(d->func);
> }
En principio parece debería funcionar, o lo que es equivalente:
int main(){
   a(D::func);
}


Sin embargo, los métodos de una clase tienen otro parámetro implícito
que es el puntero this a la instancia de la clase en la que se encuentran.
Por lo tanto ya no coincide con el prototipo void (*func)(void) y no
funcionará.
Puedes hacerlo si lo declaras como estático:
class D{
    static void func(void);
};

Es posible que tengas además que declararla como pública.






Más información sobre la lista de distribución Cconclase