2015-07-15 2 views
-3

Comment puis-je passer args à cette fonction:C++ Passage args pour annuler la fonction

int myClass::myFunc(void * aArgs){ 

    return 0; 
} 

Je l'appelle ainsi:

thrd_create(&t, myClass::myFunc, (void*)0); 

Je dois passer plusieurs arguments à la fonction, comment Je l'atteins?

+0

Ensuite, créez une structure qui agit comme votre stockage de paramètres et passez cette structure à la fonction. – ckruczek

+0

_ "Je dois passer plusieurs arguments à la fonction, comment puis-je l'obtenir?" _ Utilisez un 'struct' et transmettez l'adresse d'une instance de celle-ci. –

+0

duplication possible de [Comment passer plusieurs paramètres à un thread en C] (http://stackoverflow.com/questions/8223742/how-to-pass-multiple-parameters-to-a-thread-in-c) –

Répondre

4

Il existe de nombreux moyens. Par exemple:

struct Arg_Struct 
{ 
    int m_nArg1; 
    float m_fArg2; 
    bool m_bArg3; 
} 
//... 
Arg_Struct* pStruct = new Arg_Struct; 
pStruct->m_nArg1 = 0; 
thrd_create(&t, myClass::myFunc, (void*)pStruct); 

//... 

int myClass::myFunc(void * aArgs){ 
    Arg_Struct* pArgs = (Arg_Struct*)aArgs; 
    int n = pArgs->m_nArg1; 
//... 
    return 0; 
} 
+0

Merci! Comment puis-je obtenir les args dans ma fonction? Je n'ai jamais travaillé avec struct. – ProtectedVoid

+0

Réponse mise à jour pour afficher l'utilisation de la structure dans la fonction de thread. – Ari0nhh

+0

Merci mon ami pour votre aide, même étant évident que je ne sais rien à propos de C. – ProtectedVoid