Autor
|
Tema: Problema con Threads en libreria SDL en C++ (Leído 7,462 veces)
|
Guillermo575
Desconectado
Mensajes: 17
|
Hola aqui volviendo a molestar abri este tema por que tengo una duda acerca de los Thread que vienen en la libreria sdl, el problema no es tanto por la sintaxis si no que cuando quiero hacer que un hilo llame el metodo de una clase no me deja compilar. aqui esta un ejemplo de como mas o menos quiero que sea:
#include <stdio.h> #include <stdlib.h>; #include <SDL/SDL.h> using namespace std;
class clase{ public : clase(){ SDL_Thread *hilo; //hilo=SDL_CreateThread(run,NULL); }
public :int run(void *data){ while(1>0)metodo(); return 0; }
public :void metodo(){} };
int main(int argc, char *argv[]){}
Si se dan cuenta en donde dice run es lo que quiero que sea el hilo para que asi pueda acceder a los metodos de esa misma clase.
¿por que lo quiero asi? Por que quiero hacer un juego y ese hilo corresponde al del personaje que voy a usar para los procesos de validacion/movimiento y repintado, por eso necesito llamar a metodos de una clase pero no me deja hacer eso,ni siquiera me deja que el metodo run este dentro de una clase, asi que necesito su ayuda por favor Saludos
|
|
|
En línea
|
|
|
|
Tryptophan
Desconectado
Mensajes: 52
|
Basandome en otros lenguajes, me parece que es por que estás creando el hilo con la llamada al método en el constructor. En el instante de llamado al constructor, no se encuentra creado el objeto, por lo que cualquier invocación posible a sus métodos no es valida... Si no llega a ser esto, postea el error que lo vemos Suerte!
|
|
|
En línea
|
|
|
|
Guillermo575
Desconectado
Mensajes: 17
|
argument of type `int (clase :: )(void*)' does not match `int (*)(void*)'
Este es el error que me aparece ya que ese metodo se encuentra dentro de una clase EDIT: Cambio de perspectiva y ya olvidandome de los hilos ¿como le puedo hacer para hacer que se muevan varios personajes,enemigos y elementos al mismo tiempo ? se me ocurre usar hacer un ciclo while y moverlos uno por uno ordenadamente y para que sea polimorfico usar una clase abstracta ¿que les parece?
|
|
« Última modificación: 5 Abril 2011, 08:02 am por Guillermo575 »
|
En línea
|
|
|
|
Tryptophan
Desconectado
Mensajes: 52
|
Está bien que uses polimorfismo... No sé si estás al tanto de las técnicas utilizadas para juegos (bounding box, colisiones, arboles de busqueda, etc, etc), es por eso que por las dudas te dejo el link al sitio de una materia de mi facultad que te puede ser de ayuda. Son apuntes para darte una introducción, pero creo que te serán de ayuda.. http://sites.google.com/site/tgcutn/. Mucha suerte con el proyecto y cualquier cosa preguntá...
|
|
|
En línea
|
|
|
|
Guillermo575
Desconectado
Mensajes: 17
|
Está bien que uses polimorfismo... No sé si estás al tanto de las técnicas utilizadas para juegos (bounding box, colisiones, arboles de busqueda, etc, etc)
Bueno.... de hecho este proyecto lo he estado haciendo en java y usaba colisiones y listas enlazadas (para identificar enemigos y armar personajes con imagenes), el problema es que debido a que queria hacer un juego mas complicado y dicen que java no estan efectivo haciendo juegos, queria probar con el lenguaje c++ y la libreria sdl, pero el problema es que soy muy novato trabajando en c++ y queria usar la logica de mi juego en java a c++ pero no pude, y es asi como llegue aqui, aun asi no me haria daño leer un poco de la pagina que me enviaste Saludos PD: Ahorita tengo un problema usando multi archivos (#include"archivo.c" por ejemplo) y no puedo incluir mas de 2 a la vez, espero que me respondas
|
|
|
En línea
|
|
|
|
Tryptophan
Desconectado
Mensajes: 52
|
¿Lo pusiste en el mismo directorio que el que estás compilando, no?. Me refiero al "archivo.c".
|
|
|
En línea
|
|
|
|
Foxy Rider
Desconectado
Mensajes: 2.407
Deprecated
|
No podés pasar el método de una clase como un puntero a función (salvo que la declares como estática, pero no podrías actuar por-instancia, es decir no podrías interactuar con partes no estáticas), tenés que hacer algún "pegamento" entre el mundo de C (Procedural) y C++ (Orientado a objetos) ... tenés muchas formas, la más sencilla es tener una función intermedia que reciba la instancia de la clase como parámetro y que llame a X método ...
Saludos.
|
|
|
En línea
|
|
|
|
Guillermo575
Desconectado
Mensajes: 17
|
No podés pasar el método de una clase como un puntero a función (salvo que la declares como estática, pero no podrías actuar por-instancia, es decir no podrías interactuar con partes no estáticas), tenés que hacer algún "pegamento" entre el mundo de C (Procedural) y C++ (Orientado a objetos) ... tenés muchas formas, la más sencilla es tener una función intermedia que reciba la instancia de la clase como parámetro y que llame a X método ...
Saludos.
¿Te estas refiriendo a los archivos "header" cabecera? en ese caso ¿como puedo definir los metodos de una clase en ella? Saludos
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. @Guillermo575Asi: Header.h class Header { public: static int run(void *data); private: int funcion2(); };
CPP #include "Header.h" int Header::run(void *data){ while(1>0) { metodo(); } return 0; } int Header::funcion2() { return 1; }
Dulces Lunas!¡.
|
|
« Última modificación: 7 Abril 2011, 04:59 am por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Guillermo575
Desconectado
Mensajes: 17
|
Entonces en el header escribo los metodos o solo los defino? y si quiero ponerle contenido al metodo del header tiene que ser en el archivo .cpp? Ahora bien si por ejemplo quiero hacer otro archivo que llame a esos metodos ¿cual debo incluir el .h o .cpp?
En pocas palabras mi objetivo es crear diferentes archivos, uno del personaje que controlo,enemigos,escenarios,etc y poderlos llamarlos todos desde el main() (si es que no entendieron mas o menos a donde quiero llegar)
|
|
« Última modificación: 7 Abril 2011, 07:25 am por Guillermo575 »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema Librería SFML
Programación C/C++
|
overxfl0w13
|
2
|
3,265
|
28 Junio 2012, 15:02 pm
por anonimo12121
|
|
|
Problema con Threads al pasar un dato mediante argumentos
Java
|
AlterMundis
|
2
|
2,877
|
23 Enero 2013, 22:50 pm
por AlterMundis
|
|
|
Problema con el uso de la libreria time
Programación C/C++
|
Black Lotus
|
4
|
3,125
|
7 Marzo 2013, 17:48 pm
por Black Lotus
|
|
|
Problema con Threads en Java
Java
|
Norochii
|
3
|
4,851
|
23 Septiembre 2013, 10:46 am
por Norochii
|
|
|
Uso de Threads y error de compilación asignado a una libreria estandar...
Programación C/C++
|
digimikeh
|
1
|
1,711
|
4 Agosto 2019, 21:17 pm
por Loretz
|
|