[VC++6] erreur creation d une methode avec un tableau en parametre [Résolu]

Signaler
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006
-
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006
-
pouvez vous jeter un oeil a ces erreur please, merci




void modIdMap(int dev, int modId[]){



 //recupere plusieur id et les empile ds le tableau





ret = PCube_getModuleIdMap( dev , &modId[0] );


 


    if( ret == 0 ){



        printf( "No module connected\n" );// Error Handling ...



        getchar();



        return;



    }







    for (int i=0;i<ret;i++){



        printf( "\nmodId1-%d : %d ", i , modId[i] );



    }



    return;



}





erreur :




C:\Documents and Settings\sme5jn\My
Documents\new\main.cpp(196) : error C2556: 'void __cdecl
modIdMap(int,int [])' : overloaded function differs only by return type
from 'int __cdecl modIdMap(int,int [])'



       
C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(34) : see
declaration of 'modIdMap'



C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(196) : error C2371: 'modIdMap' : redefinition; different basic types



       
C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(34) : see
declaration of 'modIdMap'

28 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Faut que tu alloues de la place pour ton tableau
int modId1[]; -> c'est juste un pointeur
Si tu connais la taille du tableau tu fait un int modId1[TAILLE];
Si c'est un tableau dynamique tu utilises un malloc

++
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

ca marche g donc remplacé int modId1[6];

par int* modId1=(int*)malloc(10*sizeof *modId1);
et c bon plus de pb

merci bcq  laurent1024  et merci  a toi ossi  luthor pour vos aides precieuses

++
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Si tu as un fichier .h avec le prototype de la fonction, verifies que ce prototype est le meme quand dans ta déclaration de fonction

++
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

non g pas de .h c tout ds le meme fichier, en faite c un probleme avec
le tableau, ca merche si je mais juste un int tou seul mais g besoin de
retourner un tableau et la ca merche plus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Comment fait tu ton appel a cette fonction  (parametres) ?

++
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

ben l appel importe peu vu que ca compile pas mais normalement ca doit etre ca:


modIdMap( dev,  modId[] );

    dev est un parametre qui existe deja et modId[] est le tableau ou je dois stocker


ps:je te remerci tout de meme de ton attention et escuse moi si je comprend mal ce que tu me demande


++
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Je suppose que         C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(34) : see declaration of 'modIdMap'   c'est cette ligne la :
void modIdMap(int dev, int modId[]){

Et pour t'aider il faudrais savoir à quoi correspond la ligne
C:\Documents and Settings\sme5jn\My
Documents\new\main.cpp(196) : error C2556: 'void __cdecl
modIdMap(int,int [])' : overloaded function differs only by return type
from 'int __cdecl modIdMap(int,int [])'
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

ca correspond a la meme ligne   void modIdMap(int dev, int modId[]){
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

pour info si j enleve les [] ca marche tres bien mais ca me retourne que lq premiere valeur de la liste   que  ret = PCube_getModuleIdMap( dev , &modId[0] ); stock normalement ds
modId
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Essaye ret = PCube_getModuleIdMap( dev , modId );
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

il ne reconnai plus le tableau


C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(199) : error C2109: subscript requires array or pointer type

C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(199) : error C2102: '&' requires l-value

C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(208) : error C2109: subscript requires array or pointer type





si tu vois un autre moyen de recuperer les valeur n hesite pas


Un truc que je trouve bizar :

int val1;

int val2;

int val 3;





PCube_getModuleIdMap( dev , &val1);


me stock l adresse de chacun des objet sur dev respectivement ds val1, val2 et val3
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

je voudrait en faite faire la meme chose avec un nombre indefini d objet
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
void modIdMap(int dev, int modId[]){


ret = PCube_getModuleIdMap( dev , modId );
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

C:\Documents and Settings\sme5jn\My
Documents\new\main.cpp(198) : error C2664: 'PCube_getModuleIdMap' :
cannot convert parameter 2 from 'int * []' to 'int *'
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

void modIdMap(int dev, int modId[]){

    ret = PCube_getModuleIdMap( dev , &modId[0] );


main.obj : error LNK2001: unresolved external symbol "int * modId1" (?modId1@@3PAHA)

Debug/new.exe : fatal error LNK1120: 1 unresolved externals
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

avec ca comme appel modIdMap(dev, modId1);

car modIdMap(dev, modId1[]); ->    C:\Documents and Settings\sme5jn\My Documents\new\main.cpp(77) : error C2059: syntax error : ']'
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Perso, je capte rien a ton code. Et comme je pense que c'est a toi de
détailler ton pb pour le rendre compréhensible, je perds pas mon temps
a essayer de comprendre. (c'est ptet moi, auquel cas c'est pas
suffisamment clair pour moi).
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bon mais ce que je pige pas, le compilo donne une erreur des plus explicites:
C:\Documents and Settings\sme5jn\My
Documents\new\main.cpp(196) : error C2556: 'void __cdecl
modIdMap(int,int [])' : overloaded function differs only by return type
from 'int __cdecl modIdMap(int,int [])'


donc ta quelque part: int modIdMap(int, int *) au lieu de void modIdMap(int, int *)
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

oui g resolue ce pb mais des que je change quelque chose ca me donne un autre erreur
le dernier en date que je comprend pas c'est
main.obj : error LNK2001: unresolved external symbol "int * modId1" (?modId1@@3PAHA)
Debug/new.exe : fatal error LNK1120: 1 unresolved externals

merci quand meme de ton aide
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Post plus de code, ou détail précisément comment tu déclares tes
fonctions. Et surtout, ou obtiens tu ce message d'erreur ! car ya plein
de situations possibles...