Accueil > Forum > > > > bug incompréhensible
bug incompréhensible
samedi 27 novembre 2004 à 20:21:16 |
bug incompréhensible

graall
|
Bonjour à tous, Je viens de découvrir les classes en c++ et j'ai créé mon premier programme les utilisant mais il y a un probléme à l'exécution : la variable 'niveau' qui devrait afficher '3' affiche '255' : /* main.cpp : */ #include "ressource.hpp"
int main() { eleve moi(2,"Arthur","Martin",3,4); moi.afficher(); getch(); }
/* ressource.hpp */ #ifndef RESSOURCE_HPP #define RESSOURCE_HPP
#include <conio.c> #include <iostream> using namespace std; #include "eleve.hpp"
#endif
/* eleve.hpp */ class eleve { private : int id; char nom[200]; char prenom[200]; int niveau; int classe;
public : eleve(int id_,char nom_[200],char prenom_[200],int niveau_,int classe_); void afficher(); }; eleve::eleve(int id_,char nom_[200],char prenom_[200],int niveau_,int classe_) { id = id_; niveau = niveau_; classe = classe_; for (int i=0;i<=sizeof(nom);i++) // transfert de 'nom_' vers 'nom' { nom[i] = nom_[i]; } for (int i=0;i<=sizeof(nom);i++) // transfert de 'prenom_' vers 'prenom' { prenom[i] = prenom_[i]; } } //----- void eleve::afficher() { cout << "ID : " << id << endl; cout << "NOM : " << nom << endl; cout << "PRENOM : " << prenom << endl; cout << "NIVEAU : " << niveau << endl; cout << "CLASSE : " << classe << endl; }
|
Je n'y comprends rien. (j'utitilise Dev-C++ 4.9.8.9 Beta) Merci de votre aide.
|
|
samedi 27 novembre 2004 à 21:35:41 |
Re : bug incompréhensible

luhtor
|
Réponse acceptée !
C'est normal, remplace tes boucles fort par ca: for (int i=0;i < sizeof(nom);i++) // transfert de 'nom_' vers 'nom' { nom[i] = nom_[i]; } for (int i=0;i < sizeof(nom);i++) // transfert de 'prenom_' vers 'prenom' {
Cad enlève les inégalité larges. Car tu dépassais la taille du tableau et comme en mémoire c'est ton entier qui suit, il se fait a moitié écrasé, et donc ca donne une valeur délirante.
|
|
samedi 27 novembre 2004 à 22:05:43 |
Re : bug incompréhensible

luhtor
|
Réponse acceptée !
Autrement, je viens de passer du temps sur ton code car il y avait des trucs que je comprenais pas avec les chars, voici une version du meme code modifié, regardes: #include <conio.c> #include <iostream> using namespace std;
class eleve { public : int id; char *nom; char *prenom; int niveau; int classe;
public : eleve(int id_,char nom_[],char prenom_[],int niveau_,int classe_); eleve() { } ~eleve() { } void afficher(); };
int main() { eleve moi(2,"Arthur","Martin",3,4); eleve moi2(3,"Luhtor","Huss",6,4); moi.afficher(); moi2.afficher(); getch(); return 0; }
eleve::eleve(int id_,char *nom_,char *prenom_,int niveau_,int classe_) { id = id_; niveau = niveau_; classe = classe_; nom = new char[10]; prenom = new char[10]; strcpy(nom, nom_); strcpy(prenom, prenom_); }
void eleve::afficher() { cout << "ID : " << this->id << endl; cout << "NOM : " << this->nom << endl; cout << "PRENOM : " << this->prenom << endl; cout << "NIVEAU : " << this->niveau << endl; cout << "CLASSE : " << this->classe << endl; }
|
Les "this" sont pas nécessaires mais je les mets systématiquement, question de visibilité.
|
|
samedi 27 novembre 2004 à 22:13:35 |
Re : bug incompréhensible

luhtor
|
Réponse acceptée !
Décidément, deux dernières choses utiles: nom = new char[10]; prenom = new char[10];
|
remplace le par: nom = new char[strlen(nom_)+1]; prenom = new char[strlen(prenom_)+1];
|
Ca devrait marcher, et ca évitera de prendre de la mémoire pour rien et c'est totalement dynamique maintenant.
|
|
samedi 27 novembre 2004 à 22:14:19 |
Re : bug incompréhensible

luhtor
|
Réponse acceptée !
un oubli: strlen() nécessite #include <string.h>
|
|
dimanche 28 novembre 2004 à 08:52:37 |
Re : bug incompréhensible

graall
|
Merci beaucoup pour tous vos message !!!
|
|
dimanche 28 novembre 2004 à 15:51:22 |
Re : bug incompréhensible

vecchio56
|
Si tu veux un truc correct, enleve le #include <conio.c> Tu fais des new dans le constructeur, il fait libérer ca dens le destructeur Tu es en C++, donc n'inclus pas <string.h> mais <cstring>
Pour ton probleme du départ, il ne faut pas que tu utilise sizeof sur un pointeur, ca donne toujours 4 en 32 bits.
|
|
Cette discussion est classée dans : int, id, niveau, prenom, eleve
Répondre à ce message
Sujets en rapport avec ce message
Pb de strcpy et de char tab[i][j] [ par fred23 ]
Bonjour,J'ai ecrit les code suivant mais le strcpy ne me donne rien.Qui pourrais me dire pourquoi.?J'ai repéré la ligne avec une fleche.Merci pour vot
Probleme de creation de fichier avec DevC++ BloodShed 4.9.8.0 [ par Anysse ]
Bonjour, donc moi j ai un petit probleme avec la creation d un fichier en utilisant des fonctions de haut niveau : fopen et fclose, lors de la compila
reservation de la memoire [ par khalid_trunks ]
salut ts le monde.je debute en c++,j'ai fais une petite simple application( gestion d'appelles)....je sais po grand chose en c++.ben j'ai fais mon pro
probleme avec une boite de dialogue [ par anonyme_man_in_this_world ]
salut !! ça sera simpa si vous m'aidiez a corriger ce code ******************************************************************************* #
tableau 2 dimension en C [ par Babar51 ]
voila je cherche a modifié une entrée dans un tableau a 2 dimension en C ... j ai essayé le code suivant mais je n obtien que des echec ... en bon deb
Erreur conversion from `Sportif*' to non-scalar type `Sportif' requested [ par lordskyser1 ]
Bonjour,je débute en C++ et je tente de compiler ma première classe sans y arriver, car je n'arrive pas à comprendre le message d'erreur de dev c++.he
probleme dans une ecriture de fichier [ par hisoka56 ]
bon salut a tous, j'ai un petit probleme d'ecriture dans un fichier dans uen fonction qui permet de sauvegarder un niveau voila le fichier de niveaux
tableau de caracteres [ par infodaoudi ]
bonjour,j'ai une classeclass fich{int id;char *fich}je veux initialiser une liste de cette classeFich::Fich(int a){for(int i=0;i{ id=i; fich= "<fo
metre der donner en ordre crosante ??? [ par li ]
Comment metre des donner en ordre ???Mon code : ma class; class colision{public: <b
IA Min-Max adaptée au puissance 4 [ par elfdu71 ]
Bonjour, voici mon problème : je n'arrive pas à construire l'arbre min max et à faire remonter la colonne qui doit être jouée.J'ai : +une fonction gai
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|