Título: Problema al pasar funcion como parametro a un inicializador de clase [C++][ok] Publicado por: <[(x)]> en 16 Abril 2012, 05:53 am Buenas estaba probando hacer un código y todo estupendo hasta el momento de compilar.
Lo que pretendo es pasar la función MenssageArrival a mi clase Server de tipo ServerDosGame para, cuando el servidor este pueda ejecutar la función MenssageArrival externa a el. El error es el siguiente: Código: game.cpp: In member function ‘int Game::Start()’: La linea 14 de game.cpp seria: Código siendo uInt_NumberOfPlayers, uInt_StateGame unsigned int y MenssageArrival la siguiente funcion: Código
ServerDosGame es una clase en la cual defino su constructor de la siguiente manera: Código
Es la primera ves que trato con funciones de esta forma, ya probé un par de cosas pero nada funciono espero puedan ayudarme :) Si es necesario que deje mas informacion para reaolver el problema q tengo... Diganme :) Título: Re: Problema al pasar funcion como parametro de otra. a(b()); [C++] Publicado por: <[(x)]> en 16 Abril 2012, 21:17 pm hola de nuevo...
estuve cambiando las definiciones de Código por Código
y ahora paso a la función de la siguiente forma: Código
la definición de la función que paso esta intacto y la que recibe el puntero a función quedo así: Código
No logre solucionar el problema pero creo q esto es mas pavo solo q no logro hacer q coincidan los tipos? no entiendo del todo alguna manito por ahí ?. Error de compilacion: Código: game.cpp:17: error: argument of type ‘std::string (Game::)(unsigned int, std::string)’ does not match ‘std::string (*)(unsigned int, std::string)’ ... Título: Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] Publicado por: Beakman en 17 Abril 2012, 03:18 am Buenas.
Copié el código en un archivo main.cpp. Y quedó así: Código
Esto me compila bien. No hay ningún error, podés intentar compilarlo vos. Y hacé lo siguiente: poné todas las clases y funciones que tengas en un solo archivo main.cpp. Si por casualidad estás usando diferentes namespaces quitalos. Y si estás usando algún entorno de desarrollo y te genera archivos objeto ( archivos .o ) Borralos y volvé a compilar. Postea los errores que tengas. Título: Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] Publicado por: <[(x)]> en 17 Abril 2012, 03:56 am :D
(pido disculpas por no aclarar que era desde otra clase) Gracias por responder. Si, eso lo pobre... solo que cunado lo pongo asi: Código
Código: g++ *.cpp Título: Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] Publicado por: Beakman en 17 Abril 2012, 04:13 am Citar (pido disculpas por no aclarar que era desde otra clase) Ah ! Ahora sí tiene sentido !.Te faltó poner static en el método MenssageArrival. Ese código quedaría así: Código
Static es para poder acceder al método sin declarar una instancia de la clase. Ahora reparando en el código original te debería compilar bien. Título: Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] Publicado por: <[(x)]> en 17 Abril 2012, 04:38 am Perfecto. En la definición le puse static pero en la implementación si le ponía me saltaba que no existía dicha función. Después dice lo siguiente: Código: game.cpp: In static member function ‘static std::string Game::MenssageArrival(unsigned int, std::string)’: xD ... como accedo a las variable/funciones de la clase? Título: Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] Publicado por: Beakman en 17 Abril 2012, 05:06 am La definición es así:
Código
Si querés manipular las variables miembro de la clase creo que sería mejor pasarle un puntero del objeto que estás usando, en lugar de pasarle el método. Título: Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] Publicado por: <[(x)]> en 17 Abril 2012, 05:30 am gracias.. creo q voy a probar con eso... jeje despues seguiré probando en próximos programas ya q en vb me dio buen resultado.
|