Accueil > Forum > > > > Problème avec un pointeur passé en paramètre
Problème avec un pointeur passé en paramètre
vendredi 7 septembre 2007 à 14:39:57 |
Problème avec un pointeur passé en paramètre

exar
|
Bonjour à tou(te)s ! J'ai un petit problème avec un pointeur passé en paramètre... Voici ce qui se passe: J'ai une classe abstraite A, une classe fille AA et une troisième classe B. Ma classe B a une méthode qui reçoit en paramètre un A*. J'aimerais que la valeur du paramètre soit modifiée. Or, quand je passe un AA*, ça ne fonctionne pas... J'ai tenté de modifier la méthode en passant un A*&, mais lorsque je passe un AA*, il me dit que le compilo me dit que le type est incorrect, qu'il ne sait pas passer un AA*&, parce que le type est un A*&... Quelqu'un peut m'aider ? Merci d'avance !
|
|
vendredi 7 septembre 2007 à 15:08:33 |
Re : Problème avec un pointeur passé en paramètre

juju12
|
C'est normal que ca plante, c'est illégal : tu as le droit de convertir un AA* en A* (base du polymorphisme quand même) mais pas un AA* en A*&. Pourquoi cela ? Imagine que dans ta fonction tu alloues au pointeur un objet de base (oublions l'abstraction ca change rien) : void Test(A*&pA){pA=new A;return;} Dans ce cas, si tu passes un AA* en appel de la fonction, tu vas te retrouver à essayer de convertir un A* en AA*... ce qui est pour le coup interdit.
|
|
vendredi 7 septembre 2007 à 15:22:19 |
Re : Problème avec un pointeur passé en paramètre

exar
|
Merci juju12, mais alors, comment puis-je faire ?
|
|
vendredi 7 septembre 2007 à 16:50:37 |
Re : Problème avec un pointeur passé en paramètre

juju12
|
TU PEUX PAS ! Ou alors surcharge ta fonction pour qu'elle accepte en argument un coup un A*&, un autre version un AA*&.
|
|
vendredi 7 septembre 2007 à 17:01:59 |
Re : Problème avec un pointeur passé en paramètre

exar
|
En fait, je dois faire hériter pas mal de classes de A, et j'aurais voulu utiliser le polymorphisme, parce que toutes mes classes filles doivent utiliser cette fonction memebre... Il n'y a vraiment AUCUN moyen ? J'avais pensé à l'identification dynamique des types avec typeinfo et bidouiller qqch avec ça, mais je trouve cela un rien fastidieux...
|
|
vendredi 7 septembre 2007 à 17:15:23 |
Re : Problème avec un pointeur passé en paramètre

DeAtHCrAsH
|
A*& ???? Kesako.... Jamais vu o_O ! * = Pointeur et &=Reference. C'est joli mais je doute de l'utilité de ce truc....
Shell
|
|
vendredi 7 septembre 2007 à 17:20:19 |
Re : Problème avec un pointeur passé en paramètre

juju12
|
DeAtHCrAsH => moi non plus j'avais jamais vu  exar => bien sûr mais pourquoi as-tu absolument besoin de passer le pointeur par référence? C'est pas très propre de faire ca, après vu de l'extérieur on sait pas si le code a créé un nouvel objet, s'il a libéré correctement l'ancien etc...
|
|
vendredi 7 septembre 2007 à 17:48:45 |
Re : Problème avec un pointeur passé en paramètre

exar
|
Si, ça existe. En fait, à l'intérieur de ma fonction memebre, je dois modifier mon pointeur. Je ne crée pas de nouvel objet. J'ai tenté de surcharger l'opérateur d'affectation pour cela, d'abord en le déclarant virtuel pu dans la classe de base, puis simplement virtuel, mais il ne l'appelle jamais lorsque j'affecte ma nouvelle valeur au paramètre... J'ai fait une trace d'exécution, et bizzarement, il n'appelle jamais l'opérateur surchargé...
|
|
vendredi 7 septembre 2007 à 18:28:03 |
Re : Problème avec un pointeur passé en paramètre

juju12
|
Mais POURQUOI tu veux modifier ton pointeur?
|
|
vendredi 7 septembre 2007 à 18:47:18 |
Re : Problème avec un pointeur passé en paramètre

exar
|
Ben voilà, en fait, ma classe B représente un fichier. La méthode appellée (qui a pour paramètre A*) va lire dans le fichier et récupère les données. La classe A est la classe de base, abstraite. AA est une des classes filles. A possède une méthode virtuelle pure qui renvoie un A*. Dans la méthode de B, j'essaie de faire une affectation sur mon paramètre, en appelant la méthode de AA*. En bref, tu as un truc du style: class A{ //membres privés, constructeurs, destructeur, etc... virtual A* readfile(fstream&)=0; }
class AA: public A{ //idem que A A* readfile(stream&); };
Implémentation:
A* AA::readfile(fstream& arg){ //récupération des données dans le stream return new AA(<mes données>); }
Dans B: class B{ private: fstream _file; //... void get(A*); };
Implémentation: void B::get(A* arg){ arg=arg->readfile(_file); }
Ainsi, j'espérais pouvoir récupérer mes données pour n'importe quel descendant de A... Mais ça ne fonctionne pas... J'arrive à récupérer les données dans le fichier, mais mon pointeur n'est pas modifié...
|
|
Cette discussion est classée dans : problème, classe, paramètre, pointeur, aa
Répondre à ce message
Sujets en rapport avec ce message
pointeur de classe [ par gbcha ]
bonjour,J'ai un problème avec microsoft visual C++. J'avais crée un certain nombre de classe, avec un certain nombre de pointeurs sur ces classes. J'a
[C] Pointeur int comme paramètre dans une function qui ne marche pas [ par nitrique ]
Bonjour à tous,J'ai retourné les pointeurs dans tous les sens mais rien n'y fait.J'aimerais modifier la valeur d'une variable int à l'interieur d'une
Question avec les constructeurs de copies [ par OrsE ]
Salut tout le monde! Voilà, j'ai un problème avec des classes, et je voudrais savoir si je peux le solutionner avec un constructeur de copie. Voilà un
Problème utilisation fonction [ par sidhannowe ]
Bonjour, J'utilise la classe screenshot présentée ici: http://www.cppfrance.com/code.aspx?id=21255 mais lorsque je compile Dev c++ m'indique des erre
Problème de paramètre [ par jeromedu94 ]
bonjour,je voudrais faire une fonction mais le nombre de paramètre à transmettre n'est pas fixe, et je voudrais savoir comment il faut faire.C'est le
Erreur de segmentation... Qu'est ce que c'est ??? :o [ par Rouliann ]
Salut tout le monde j'ai un gros problème et malgré tous mes essais je n'arrive pas à le résoudre... Il n'y a pas d'erreurs à la compilation mais lors
Fonctions callback [ par neodelphi ]
Bonjour tout le monde ! J'aimerai savoir s'il est possible de passé en paramètre un pointeur de méthode en précisant une instance, je m'explique: so
Problème de class [ par norton ]
Bonsoir, j'ai un problème avec ma class. quand je compile ca me donne ce message d'erreur : error C2653: 'CCamera' : is not a class or namespace name
Problème avec une classe [ par Freeskieur ]
Hello,Je connais assez bien les classes mais là j'ai une spécialité et je capte pas comment il faut faire pour que ca passe.Ca foire sur la ligne ou i
MSComm [ par Scopas ]
Bonjour, j’ai un petit problème je cherche à ajouter un le contrôle ActiveX Microsoft communication control, version 6.0 (donc celui de MSComm) Sur Vi
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
|