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++
- 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
- Les listes doublement chainées en c - Astuces et Solutions
- Remplir une liste chainée en c - Forum Programmation
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Les listes simplement chainées en c - Astuces et Solutions
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
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
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
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
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