Accueil > Forum > > > > Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement
Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement
samedi 17 mars 2007 à 13:41:19 |
Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement

julien_boss
|
Bonjour, j'ai une classe LogFile, dans laquelle j'ai surchargé l'operateur [] pour qu'il renvoit un ENREGISTREMENT (structure perso). Je fais ceci : LogFile *lf, lf2; lf = new LogFile(); ENREGISTREMENT en = lf[2], //Bug à ce niveau là en2 = lf->operator[](2), //Fonctionne ... en3 = lf2[2]; //Fonctionne aussi ... delete lf;et là ca parait clair, ca coince lorsque l'objet est créé dynamiquement  voici la définition (ou déclaration, je ne sais jms distinguer les 2  ) de la surcharge : ENREGISTREMENT& LogFile::operator[](int n) { ENREGISTREMENT enVoid = {-1, " ", " ", " ", " "}; ENREGISTREMENT &enV = enVoid; if(Good() && n>=0 && n<m_nbEn) return m_tabEn[n]; else return enV; }donc comment faire pour que la surcharge de [] marche sur un objet créé dynamiquement ? merci 
|
|
samedi 17 mars 2007 à 13:59:01 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement

juju12
|
Réponse acceptée !
Déjà c'est l'implémentation là :-) Ensuite c'est normal que ça plante: lorsque tu écris : en=lf[2]; lf est un pointeur donc en fait avec cette écriture on tente d'accéder au deuxième élément du tableau alors qu'il n'en contient qu'un seul d'où bug. L'écriture correcte est : lf->operator[](2) ou bien encore (*lf)[2] qui cette fois appelle la fonction operator[] de l'objet. C'est pas forcément très joli à écrire peut-être qu'en passant par des références : LogFile& RLF=(*lf). et ensuite en=RLF[2];
|
|
samedi 17 mars 2007 à 14:05:47 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement

julien_boss
|
merci ca marche comme ca, c'était assez con mais fallait y penser ^^ y'aurait il quand meme un moyen de faire marcher l'opérateur [] sur un pointeur d'objet, avec une implémantation différente ?
|
|
samedi 17 mars 2007 à 14:14:05 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement

juju12
|
Je vois pas d'autres méthodes que : en=lf->operator[](2) // appel de fonction depuis pointeur en=(*lf)[2] // appel depuis objet pointé par le pointeur en=RLF[2] // où RLF est une référence à l'objet pointé par lf, peut-être l'écriture la plus jolie
|
|
samedi 17 mars 2007 à 20:17:41 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement
|
samedi 17 mars 2007 à 20:47:01 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement

julien_boss
|
tiens j'en profite pour demander pourquoi ce code foire : je détail d'abord la structure ENREGISTREMENT : struct ENREGISTREMENT { int id; std::string login; std::string pass; std::string email; std::string site; };LogFile lf; ENREGISTREMENT e = lf[10]; //Sachant que m_nbEn<10 (voir l'implémentation de la surcharge de l'op [] ). Ca foire à ce niveau là
alors que ce code marche : LogFile lf; cout << lf[10].id << endl; //affiche -1 (voir là encore l'implémentation de la surcharge de [])
celui ci par contre fait planter méchament la console :
LogFile lf; cout << lf[10].login << endl; //Devrait afficher " " mais il n'en est rien
Une idée mes braves ? 
|
|
lundi 19 mars 2007 à 11:26:44 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement

juju12
|
Réponse acceptée !
Pour le premier truc c'est simple : tu crées un tableau à l'intérieur de la procédure et tu renvoies une référence dessus...sauf que ce tableau est détruit à la fin de la procédure et donc ta référence est invalide=>erreur Partant de là tes deux autres bouts de code devraient pas marcher non plus
|
|
lundi 19 mars 2007 à 20:51:32 |
Re : Surcharge de l'operateur [] => erreur avec un objet créé dynamiquement
|
Cette discussion est classée dans : enregistrement, objet, créé, surcharge, lf
Répondre à ce message
Sujets en rapport avec ce message
Enregistrement d'un objet [ par MrKribou ]
En c++ existe t'il des fonctions permettant d'enregistrer des instances de classe, des objets quoi, dans un fichier pour pouvoir les recuper ensuite o
Delete avec un objet ayant créé une donnée static [ par themaste ]
Bonjour à tous!Je suis actuellement sur la reprise d'un programme, et je dois y ajouter une nouvelle fonctionnalité. En travaillant sur celle-ci, j'ai
surcharge d'opérateurs [ par dyroj ]
Bonjour, En apprenant un cour sur le langage c++ je suis arriver au surcharge d'opérateurs. Je pence avoir compris le fonctionnement mais il y a quel
surcharge operator << [ par elninodu42 ]
Bonjour, Je dois trouver une solution permettant d'afficher dans un flux de chaine. Je ne peux pas utiliser de string... Je dois donc faire une surc
objet persistant [ par dalimrabet ]
[b][i][size=100]salut tout le monde :) je suis débutant dans le domaine de programmation , et il nous a été demandé dans la classe de créer des objets
CompDatPacket : HELP!! "Reception , stockage , et enregistrement de données" [ par sethakadef ]
Bonjour, J ai besoin d aide: je suis en train de réaliser une application qui analyse une liaison serie entre deux terminaux. [u]Objectif[/u]: recuper
Capter les "messages" ou les "évènements" d'une application Office - Sur quel objet l'utilisateur clique t-il ? [ par FFREDDY ]
Bonjour à tous, En premier lieu, je précise de suite que je ne suis pas développeur (quelques petits bouts de code en VB6 il y a longtemps, rien de p
Détection d'objet et de mouvement [ par starlogix ]
Bonjour, Je suis actuellement étudiant dans une école d'ingénieur dans le domaine du multimédia. Mon projet tuteuré (que je dois avoir fini dans 3 se
Modifier une source C++ pour projet Robotique [ par aldrac ]
Bonjour a tous, comme le titre l'indique je cherche de l'aide pour modifier un projet en C++. J'ai récupérer une source (libre de droit) que je dois m
Comment faire un double enregistrement [ par HardinLTyler ]
Bonjour à tous! J'aimerais avoir vos idées sur comment faire un double enregistrement automatique applicable sur toute la suite Office, par simple en
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft 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
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
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
|