PDA

Ver la versión completa : ¿Cómo hacer este casting?



anibarro
08/02/2006, 08:31
Buenas, estoy intentando compilar un programa que aunque esta en C, en teoria esta preparado para compilar en C++, pero no hace más que darme errores de castings. El caso es que algunos son sencillitos y los voy arreglando, pero este de punteros a funciones no se por donde cogerlo.
Al compilar con el g++ parece que hay que hacer algo especial para que se de cuenta el compilador del casting, pero no tengo ni idea, a ver si me podeis echar un cable...he pegado los trozos de codigo aqui, explicando un poco:
http://rafb.net/paste/results/Doi8Gv64.html
Gracias por adelantado :brindis:

Wave
08/02/2006, 13:34
pon esto:
m->_PutFace = (pl_Cam*, pl_Face*)plPF_TransF;

Aunque es un tipo muy raro, no se si funcionara...

mortimor
08/02/2006, 13:50
Hombre, yo el error no se si sera de casting. No soy ningun experto en este tipo de cuestiones, aunque he lidiado antes con punteros de función.

Segun dices que te responde el compilador, esta claro que se debe a que tu declaras el puntero a una funcion sin argumentos y despues quiere asignar una funcion con argumentos. La definicion de una funcion pasa siempre por definir el tipo de retorno y el tipo delos argumentos.

Prueba a cambiar la definicion del puntero de la estructura de:


void (*_pfunct)();

a


void (*_pfunct)(pl_Cam *, pl_Face *);

anibarro
08/02/2006, 16:59
Pakoito se le atragantaba solo por culpa de las funciones de reserva de memoria, pero eso le pasa tambien en C, y de momento al menos compila el c++ sin problemas ^^
Wave eso fue lo primero q se me ocurrio y no colaba xD
Mortimor creo que tu forma ha funcionado [wei6] [wei4] jeje pero poniendo _pl_Mat y _pl_Face, a ver si voy arreglando todas las cosillas que salen y pruebo si funciona ;P
Muchas gracias voy a seguirrr

mortimor
08/02/2006, 17:18
Me alegro de que te funcione :) En el fondo se algo de esto :p

No dudes en preguntar, que estamos aqui para echarnos un cable los unos alos otros.