Bonjour,
je débute en C++ sur un projet de répertoire avec des classes.
j'ai une erreur de compilation que j'ai du mal à comprendre : main.cpp:25:16: error: use of deleted function ‘Repertoire::Repertoire()’
Après lecture sur différents forums, je comprends qu'il s'agit d'une problème au niveau du constructeur par défaut et notamment à l'initialisation des attributs utilisés par le constructeur par défaut
J'essaie donc d'initialiser les attributs de Repertoire et j'ai un nouveau message d'erreur sur la ligne Contact tab[taille]={0} : repertoire.h:32:31: error: could not convert ‘0’ from ‘int’ to ‘Contact’ que je ne sais pas comment résoudre
J'ai essayé Contact tab[taille]={nullptr} et Contact tab[taille]=0...
Je suis un peu largué...
main.cppp
interface.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <cstdlib> #include <iostream> #include <string> #include "interface.h" #include "repertoire.h" #include "contact.h" using namespace std; int main(int argc, char** argv) { Repertoire r; int choix = 0; //tant que l'utilisateur ne quitte pas le programme on affiche le menu while(choix!=9){ menu(); std::cout<<"Votre choix ? "; std::cin >> choix ; traiterChoix(choix,r); }; return 0; }
interface.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 #include <cstdlib> #include <iostream> #include <string> #include "interface.h" #include "repertoire.h" #include "contact.h" using namespace std; void menu(){ std::cout << "1 : Rentrer un nouveau contact" << endl; std::cout << "2 : Afficher mes contacts" << endl; std::cout << "3 : Rechercher un contact" << endl; std::cout << "9 : Quitter" << endl; } void traiterChoix(int choix, Repertoire r){ string nom; string numero; switch(choix) { case 1 : //Saisies utilisateurs std::cout << "Veuillez saisir un nom" << endl ; std::cin >> nom; std::cout << "Veuillez saisir un numero" << endl ; std::cin >> numero; //Création du contact Contact c(nom,numero); //Ajout du contact au répertoire if(r.AjouterContact(c)) std::cout << "Contact ajouté" << endl ; else std::cout << "Votre répertoire est complet" << endl ; break; /*case 2 : r.repertoire::Afficher(); break; case 3 : std::cout << "Veuillez saisir un nom" << endl ; std::cin >> nom; if(r.RechercherContact(nom)==nullptr) std::cout << "Aucun contact correspondant à ce nom" << endl ; else std::cout << r.RechercherContact(nom).nom << " (" << r.RechercherContact(nom).numero << ")" << endl; break; case 9 : break; default : break;*/ } }
repertoire.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #ifndef INTERFACE_H #define INTERFACE_H #include "repertoire.h" void menu(); void traiterChoix(int,Repertoire); #endif /* INTERFACE_H */
repertoire.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <cstdlib> #include <iostream> #include <string> #include "repertoire.h" #include "contact.h" using namespace std; //ajout d'un nouveau contact bool Repertoire::AjouterContact(Contact& c)//passage par référence du compteur car paramètre entrée/sortie { //si le répertoire est complet, on informe l'utilisateur if(compteur>=Repertoire::taille){ return false; } //sinon, on peut saisir un nouveau contact else { //insertion du contact téléphonique au premier emplacement disponible du répertoire tab[compteur]=c; compteur++; return true; } } //affichage de la liste des contacts entrés dans le répertoire void Repertoire::Afficher(){ for(int i=0; i<compteur; i++){ std::cout << tab[i].nom << " (" << tab[i].numero << ")" << endl; } } //rechercher un contact à partir de son nom //renvoie l'adresse (pointeur*) ou nullptr si le contact n'existe pas Contact* Repertoire::RechercherContact(string nom){ bool trouve = false;//variable de statut de la recherche de contact for(int i=0;i<compteur;i++){ if(tab[i].nom == nom) { trouve = true; return true; } } if(!trouve){ return nullptr; } }
contact.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class Repertoire{ public: //methodes bool AjouterContact(const Contact& c); void Afficher(); Contact* RechercherContact(const std::string& nom); //on ne modifie par le parametre et on le passe par référence pour éviter clonage //on utilise un pointeur qui peut renvoyer NULL si aucun contact dans le répertoire private: static const int taille = 5; Contact tab[taille]={0}; int compteur=0; }; #endif /* REPERTOIRE_H */
contact.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <string> #include <iostream> #include "contact.h" Contact::Contact(std::string nom,std::string numero) { nom=nom; numero=numero; //std::cout << "appel constructeur sans param" << std::endl; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #ifndef CONTACT_H #define CONTACT_H #include <string> class Contact{ public: //Constructeur Contact(std::string nom, std::string numero); std::string nom; std::string numero; }; #endif /* CONTACT_H */
Partager