A propos les listes Chaînées C++
paras00
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
paras00 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
paras00 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerai bien que vous m'aidez à resoudre une erreur dans mon programme
Code C/C++ :
Il me donne comme erreur :
C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\backward\backward_warning.h|32|warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the header for the header for C++ includes, or instead of the deprecated header . To disable this warning use -Wno-deprecated.|
C:\Documents and Settings\user\Bureau\lis.cpp||In member function `void liste::ajouter(void*)':|
C:\Documents and Settings\user\Bureau\lis.cpp|46|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|47|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|52|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|52|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|53|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|123|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|124|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|136|error: `void*' is not a pointer-to-object type|
||=== Build finished: 6 errors, 1 warnings ===|
C'est suppeeeeer urgent
Et Merci d'avance
j'aimerai bien que vous m'aidez à resoudre une erreur dans mon programme
Code C/C++ :
#include <iostream.h> typedef void* T ; class element { friend class liste; T valeur; element *next; element(int a) {valeur=(T)a;next=NULL;} }; class liste { T courant; public : liste :: liste( const liste & uneListe ) { * this = uneListe; } liste(){courant=NULL;} int vide (); void initialiser (); void ajouter (T); int longuer(); void afficher(); }; int liste::vide() { if(courant==NULL) return 1; else return 0; } void liste::initialiser() { if(!vide()) { courant = NULL; } } void liste::ajouter(T v) { void* tmp=courant; void* nouveau = new T(v); ((*nouveau)->valeur) = v; nouveau->next = NULL; if(vide()) courant = nouveau; else { tmp = courant; while(tmp->next != NULL) tmp = tmp->next; tmp->next = nouveau; } } void liste::afficher() { void* tmp; if(vide()) cout<<" !la liste est vide!\n"; else { tmp = courant; while(tmp != NULL) { cout<<((tmp)->valeur)<<" "; tmp = tmp->next; } cout<<" - longueur : "<<longuer()<<endl; } } int liste::longuer() { int l=0; void* tmp = courant; while(tmp != NULL) { l++; tmp = tmp->next; } return l; } int main () { liste * L = new liste(); int choix; int v; do { cout<<"1-Nouvelle Liste.\n"; cout<<"2-Ajouter Element.\n"; cout<<"6-Afficher.\n"; cout<<"0-Quitter.\n"; cout<<" -->choix(0-6):"; cin>>choix; switch(choix) { case 1: L->initialiser(); break; case 2: cout<<" - Entrer une valeur : "; cin>>v; L->ajouter((T)v); break; case 6: L->afficher(); break; } }while(choix != 0); return 0; }
Il me donne comme erreur :
C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\backward\backward_warning.h|32|warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the header for the header for C++ includes, or instead of the deprecated header . To disable this warning use -Wno-deprecated.|
C:\Documents and Settings\user\Bureau\lis.cpp||In member function `void liste::ajouter(void*)':|
C:\Documents and Settings\user\Bureau\lis.cpp|46|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|47|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|52|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|52|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|53|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|123|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|124|error: `void*' is not a pointer-to-object type|
C:\Documents and Settings\user\Bureau\lis.cpp|136|error: `void*' is not a pointer-to-object type|
||=== Build finished: 6 errors, 1 warnings ===|
C'est suppeeeeer urgent
Et Merci d'avance
A voir également:
- A propos les listes Chaînées C++
- Listes déroulantes excel - Guide
- Listes déroulantes en cascade excel - Guide
- Lister les disques cmd - Guide
- Tous les code possible de 0 à 9 (4 chiffres ) liste - Forum Programmation
- 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
5 réponses
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.
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.
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