elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con Threads en libreria SDL en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Threads en libreria SDL en C++  (Leído 6,380 veces)
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Problema con Threads en libreria SDL en C++
« en: 2 Abril 2011, 07:38 am »

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 Desconectado

Mensajes: 52


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #1 en: 3 Abril 2011, 03:39 am »

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  ;D

Suerte!


En línea

Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #2 en: 3 Abril 2011, 05:25 am »

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 Desconectado

Mensajes: 52


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #3 en: 6 Abril 2011, 16:12 pm »

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 Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #4 en: 6 Abril 2011, 17:50 pm »

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 Desconectado

Mensajes: 52


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #5 en: 6 Abril 2011, 19:15 pm »

¿Lo pusiste en el mismo directorio que el que estás compilando, no?. Me refiero al "archivo.c".
En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Problema con Threads en libreria SDL en C++
« Respuesta #6 en: 6 Abril 2011, 19:34 pm »

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 Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #7 en: 7 Abril 2011, 03:17 am »

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 Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Problema con Threads en libreria SDL en C++
« Respuesta #8 en: 7 Abril 2011, 04:56 am »

.
@Guillermo575

Asi:

Header.h
Código
  1.  
  2. class Header
  3. {
  4. public:
  5.    static int run(void *data);
  6.  
  7. private:
  8.    int funcion2();
  9. };
  10.  
  11.  

CPP
Código
  1.  
  2. #include "Header.h"
  3.  
  4. int Header::run(void *data){
  5.    while(1>0) {
  6.        metodo();
  7.    }
  8.    return 0;
  9. }
  10.  
  11. int Header::funcion2() {
  12.    return 1;
  13. }
  14.  
  15.  

Dulces Lunas!¡.
« Última modificación: 7 Abril 2011, 04:59 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Guillermo575

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Problema con Threads en libreria SDL en C++
« Respuesta #9 en: 7 Abril 2011, 06:04 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema Librería SFML
Programación C/C++
overxfl0w13 2 2,553 Último mensaje 28 Junio 2012, 15:02 pm
por anonimo12121
Problema con Threads al pasar un dato mediante argumentos
Java
AlterMundis 2 1,825 Último mensaje 23 Enero 2013, 22:50 pm
por AlterMundis
Problema con el uso de la libreria time
Programación C/C++
Black Lotus 4 2,346 Último mensaje 7 Marzo 2013, 17:48 pm
por Black Lotus
Problema con Threads en Java
Java
Norochii 3 4,122 Último mensaje 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 972 Último mensaje 4 Agosto 2019, 21:17 pm
por Loretz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines