[C++] Passage par adresse
Fermé
Grmi91
Messages postés
12
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
17 octobre 2017
-
9 mai 2007 à 14:29
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 mai 2007 à 12:55
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 mai 2007 à 12:55
A voir également:
- [C++] Passage par adresse
- Darkino nouvelle adresse - Guide
- Rechercher ou entrer l'adresse - Guide
- Darkino : le grand site pirate change d'adresse et d'interface - Accueil - Services en ligne
- Adresse mac - Guide
- Changer adresse dns - Guide
7 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
9 mai 2007 à 14:36
9 mai 2007 à 14:36
Corrige constructionTrame (trameAConstruire, &trame);
par constructionTrame (trameAConstruire, trame);
par constructionTrame (trameAConstruire, trame);
Grmi91
Messages postés
12
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
17 octobre 2017
9 mai 2007 à 15:12
9 mai 2007 à 15:12
Au secours !!! pourquoi ya personne?
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
9 mai 2007 à 16:00
9 mai 2007 à 16:00
int main(int argc,char **argv){ char *trame=(char *)calloc(50,sizeof(char)); // ... constructionTrame (trameAConstruire,trame); // ... free(trame); //... }
La fonction main n'a rien à faire dans la classe robot, on n'est pas en java. Afin d'éviter la confusion avec les headers C, il serait judiceux de renommer robot.h en robot.hpp (mais c'est facultatif).
N'oublie pas qu'en C++ tu peux aussi utiliser les std::string (qui sont des chaînes virtuellement de taille infinie), ce qui évite de dimensionner arbitrairement tes chaînes.
#include <string> #include <iostream> void affiche_trame(const std::string & s){ std::cout << s << std::endl; } int main(){ std::string trame = "tapir"; // ... constructionTrame (trameAConstruire,trame); // ... affiche_trame(trame); // ... }
Bonne chance
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
9 mai 2007 à 16:02
9 mai 2007 à 16:02
Salut,
En fait c'est simple,
Soit tu fais char * truc dans le main
et tu l'appelles en char * dans ta fonction
Dans ce cas, n'oublie pas les new/delete
Soit tu fais char truc[taille] dans le main
et tu l'appelles en char truc[taille] dans ta fonction
Quand tu lances ta fonction ca sera
constructionTrame (trameAConstruire, trame);
Quand tu mets un & devant, c'est comme si tu parlais d'un char **
En fait c'est simple,
Soit tu fais char * truc dans le main
et tu l'appelles en char * dans ta fonction
Dans ce cas, n'oublie pas les new/delete
Soit tu fais char truc[taille] dans le main
et tu l'appelles en char truc[taille] dans ta fonction
Quand tu lances ta fonction ca sera
constructionTrame (trameAConstruire, trame);
Quand tu mets un & devant, c'est comme si tu parlais d'un char **
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
9 mai 2007 à 16:13
9 mai 2007 à 16:13
Oui d'ailleurs l'utilisation de new et de delete est plus adéquate en C++ que calloc et free, plutôt reservés au C...
Grmi91
Messages postés
12
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
17 octobre 2017
9 mai 2007 à 16:22
9 mai 2007 à 16:22
s'que tu veux dire c'est que je fasse :
????? si oui ba ensuite ça me met une erreur big up !!!! du style :
=>truc des bibliothèques
/* Prototype */ char* constructionTrame(char* trameAConstruire, char trame[50]); ************* Méthode principale *************/ int main(int argc, char *argv[]) { (...) char *trameAConstruire; char trame[50]; (...) constructionTrame (trameAConstruire, trame); (...) } /************* Méthode constructionTrame *************/ char* constructionTrame(char* trameAConstruire, char trame[50]) { (...) }
????? si oui ba ensuite ça me met une erreur big up !!!! du style :
collect2: ld terminé par le signal 11 [Erreur de segmentation] robot(.rodata+0x0): définitions multiples de « _fp_hw » /usr/lib/gcc/i386-redhat-linux/3.4.2/../../../crt1.o(.rodata+0x0): défini pour la première fois ici robot(.data+0x4): In function `__data_start': : définitions multiples de « __dso_handle » (...) /tmp/ccFXbvTY.o(.text+0x0): In function `attrapObjet::saisieObjet(char*)': : définitions multiples de « attrapObjet::saisieObjet(char*) » robot(.text+0x780): défini pour la première fois ici /usr/bin/ld: Warning: size of symbol `attrapObjet::saisieObjet(char*)' changed from 595 in robot to 519 in /tmp/ccFXbvTY.o /usr/lib/gcc/i386-redhat-linux/3.4.2/../../../crt1.o(.dynamic+0x0): définitions multiples de « _DYNAMIC » robot(.dynamic+0x0): défini pour la première fois ici
=>truc des bibliothèques
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
10 mai 2007 à 12:55
10 mai 2007 à 12:55
au moins là tu as compilé. L'erreur viens maintenant de l'édition de lien.
mais nous ta ligne de compilation.
Tu as bien suivie ce que t'a dit Mamiemando sur la class robot : c pas du java.
en C le point d'entrée est la fonction global main() !
mais nous ta ligne de compilation.
Tu as bien suivie ce que t'a dit Mamiemando sur la class robot : c pas du java.
en C le point d'entrée est la fonction global main() !
9 mai 2007 à 14:50
mais après correction toujour une erreur :
[****@poste27 progV8]$ g++ -o -lm robot robot.cpp liaisonSerie.cpp attrapObjet.cpp
robot.cpp: In function `int main(int, char**)':
robot.cpp:42: erreur: ne peut convertir « char (*)[50] » à « char* » pour l'argument « 2 » vers « char* constructionTrame(char*, char*) »
ps : faut-il que je fasse un fichier robot.h (le morceau de programme ci-dessus est issu du fichier robot.cpp) comme suit :