1. #1
    Membre confirmé Avatar de Alex-L
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2011
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2011
    Messages : 215
    Points : 281
    Points
    281

    Par défaut Problème de mise en place de thread

    Bonjour,
    J'essaye en vain d'instaurer un système de thread dans mon code mais j'ai une belle erreur à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error:*argument*of*type*'int*(mainwindow::)(void*)'*does*not*match*'int*(*)(void*)'|

    Voici ma fonction thread :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    int mainwindow::my_thread(void *data)
    {
        while(quitThread == false)
        {
            SDL_BlitSurface(feu1, NULL, screen, &positionFond);
            SDL_Delay(1000);
            SDL_BlitSurface(feu2, NULL, screen, &positionFond);
            SDL_Delay(1000);
            SDL_BlitSurface(feu3, NULL, screen, &positionFond);
        }
     
        return 0;
    }

    et la déclaration de SDL_thread dans une autre fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SDL_Thread *thread;
    thread = SDL_CreateThread(my_thread, NULL);

    Merci

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    1 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 640
    Points : 1 953
    Points
    1 953

    Par défaut

    Salut,

    de par le message de l'erreur, je pense à vue de nez que ton souci proviendrait du fait que ta fonction est en fait une méthode (ie. une fonction définie dans une classe), pas ce qu'attend SDL_CreateThread(), à savoir une fonction 'classique', définie en dehors d'une classe, comme n'importe quelle fonction en langage C.

    Les fonctions et les méthodes sont en effet deux concepts différents en C++, car (pour faire simple) la méthode englobe une sorte d'argument supplémentaire 'caché' (en tout cas par la syntaxe du C++), à savoir le pointeur 'this' de l'instance de classe qui constitue le contexte dans lequel elle est appelée.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  3. #3
    Membre confirmé Avatar de Alex-L
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2011
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2011
    Messages : 215
    Points : 281
    Points
    281

    Par défaut

    Enfaite c'est en mélangeant la SDL avec le C++ que les problèmes arrivent, tu as raison.
    J'ai donc tout refait en C est ça marche.

    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo