A propos les listes Chaînées C++
Fermé
paras00
Messages postés
11
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
19 mai 2010
-
7 févr. 2010 à 20:24
paras00 Messages postés 11 Date d'inscription samedi 12 décembre 2009 Statut Membre Dernière intervention 19 mai 2010 - 7 févr. 2010 à 20:56
paras00 Messages postés 11 Date d'inscription samedi 12 décembre 2009 Statut Membre Dernière intervention 19 mai 2010 - 7 févr. 2010 à 20:56
A voir également:
- A propos les listes Chaînées C++
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Listes déroulantes en cascade excel - Guide
- Listes déroulantes excel - Guide
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
- Freebox impossible de récupérer la liste des mises à jour - Forum Freebox
5 réponses
paras00
Messages postés
11
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
19 mai 2010
7 févr. 2010 à 20:26
7 févr. 2010 à 20:26
Pouvez-vous m'aider à résoudre cette erreur
"`void*' is not a pointer-to-object type"
et MERCIIIIIII.
"`void*' is not a pointer-to-object type"
et MERCIIIIIII.
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
662
7 févr. 2010 à 20:34
7 févr. 2010 à 20:34
alors :
pour le warning : #warning This file includes at least one deprecated or antiquated header.
<iostream.h> n'est pas le bon header à utiliser, c'est <iostream> .
pour les erreurs :
LE C (Et le C++) ont besoin de savoir le type d'objet pointé pour pourvoir faire des appels dessus :
(tmp)->valeur par exemple n'est pas valable, car tmp est un pointeur void* (donc un pointeur qui ne contient aucune information sur le type d'objet pointé ). Il n'y a donc pas la possibilité de regarder "valeur", car "valeur" est défini dans une classe, inconnue du compilateur lorsque tu fais ça.
cette ligne n'a particulièrement aucun sens :
void* nouveau = new T(v)
comment instancier sans classe ?
solution : il faut que tu te décides à choisir un type. Sinon, tu peux jeter un coup d'oeil du coté des "templates" (modèles) pour faire une classe de liste qui pourrait accepter au choix un certain type. Tu peux aussi "caster" (convertir) tes pointeurs, mais encore une fois il faut trouver un moyen de savoir vers quel type d'objet pointent tes pointeurs.
pour le warning : #warning This file includes at least one deprecated or antiquated header.
<iostream.h> n'est pas le bon header à utiliser, c'est <iostream> .
pour les erreurs :
LE C (Et le C++) ont besoin de savoir le type d'objet pointé pour pourvoir faire des appels dessus :
(tmp)->valeur par exemple n'est pas valable, car tmp est un pointeur void* (donc un pointeur qui ne contient aucune information sur le type d'objet pointé ). Il n'y a donc pas la possibilité de regarder "valeur", car "valeur" est défini dans une classe, inconnue du compilateur lorsque tu fais ça.
cette ligne n'a particulièrement aucun sens :
void* nouveau = new T(v)
comment instancier sans classe ?
solution : il faut que tu te décides à choisir un type. Sinon, tu peux jeter un coup d'oeil du coté des "templates" (modèles) pour faire une classe de liste qui pourrait accepter au choix un certain type. Tu peux aussi "caster" (convertir) tes pointeurs, mais encore une fois il faut trouver un moyen de savoir vers quel type d'objet pointent tes pointeurs.
paras00
Messages postés
11
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
19 mai 2010
7 févr. 2010 à 20:46
7 févr. 2010 à 20:46
alors sans les templates sa ne peut pas etre resolu??
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
662
7 févr. 2010 à 20:50
7 févr. 2010 à 20:50
ce serait possible si tu ne manipulais QUE des pointeurs, sans jamais chercher à faire p->quelquechose sur le p qui sont de type void* .
Et ensuite, dans ton main, tu crées ta liste (de ponteurs !) qui t'intéressent. Tu fais en sorte que toutes les fonctions ne renvoient et ne reçoivent que des pointeurs void*, et dans ton main lorsque tu veux utiliser un des pointeurs reçus par tes diverses fonction tu n'as qu'à faire par exemple : ((monType*) pointeur)->fonctionDeLaClasseMonType()
Et ensuite, dans ton main, tu crées ta liste (de ponteurs !) qui t'intéressent. Tu fais en sorte que toutes les fonctions ne renvoient et ne reçoivent que des pointeurs void*, et dans ton main lorsque tu veux utiliser un des pointeurs reçus par tes diverses fonction tu n'as qu'à faire par exemple : ((monType*) pointeur)->fonctionDeLaClasseMonType()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
paras00
Messages postés
11
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
19 mai 2010
7 févr. 2010 à 20:56
7 févr. 2010 à 20:56
Ah ok
Merci bien je vais esseyer.
Merci
Merci bien je vais esseyer.
Merci