[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