Bonjour à tous,
je suis une débutante et pour capitaliser ce que j'ai appris jusqu'ici j'ai créé trois classes.
- class CBoitierLunettes,
- classe CLunettes qui est un aggrégat de CBoitierLunettes et la classe mère de CTypeVerres
- classe CTypeVerres
voici la déclaration des trois classes:
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
| #ifndef LES_ENTETES_H_INCLUDED
#define LES_ENTETES_H_INCLUDED
#include <string>
#include <iostream>
//**************************************************
class CLunettes;
class CBoitierLunettes
{
private:
std::string m_couleur;
std::string m_nomEtiquette;
int m_volume;
CLunettes *CesLunettes; /* consequence de l'aggregation: permet
au boitier quelles sont les lunettes qui lui sont dedies*/
public:
CBoitierLunettes (std::string couleur, std::string nomEtiquette, int volume, CLunettes& a);
void Afficher ();
};
// **************************************************
class CLunettes
{
private:
int m_prix;
int m_dimension;
std::string m_styleMode;
CBoitierLunettes *CetteBoite; /* Bien que c'est CLunnettes qui est
un aggregat de CBoiteLunnettes, j'aimerai qu'un pair de lunettes sache
a quelle boitier il appartient*/
public:
CLunettes (int prix, int dimension, std::string styleMode);
void SetBoitierLunettes(); /* affecte aux lunnetes l'adresse memoire
du boitier a qui il correspond */
void Afficher();
};
class CTypeVerres: public CLunettes
{
private:
std::string m_natureVerres;
float m_poids;
public:
CTypeVerres (std::string natureVerres, float poids, int prix, int dimension, std::string styleMode );
void Afficher();
};
#endif // LES_ENTETES_H_INCLUDED |
voici le fichier source de CtypeVerres;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include "Les_entetes.h"
using namespace std;
//***********************************************
CTypeVerres::CTypeVerres (std::string natureVerres, float poids, int prix, int dimension, std::string styleMode ): CLunettes(prix, dimension, styleMode)
{
m_natureVerres = natureVerres;
m_poids = poids;
}
//**********************************************
void CTypeVerres::Afficher()
{
// affichage des attributs d'un objet CAutomobile
cout << "Les caracteristiques de ces lunettes se trouve dans l'adresse memoire: " << this << ". Elles sont les suivantes:" << endl;
cout << " nature du verre: " << m_natureVerres << " ; son poid: " << m_poids << endl;
} |
voici celui de CLunettes;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include "Les_entetes.h"
using namespace std;
//***************************************************
CLunettes::CLunettes(int prix, int dimension, std::string styleMode)
{
m_prix = prix;
m_dimension = dimension;
m_styleMode = styleMode;
}
// ***********************************************
void CLunettes::Afficher()
{
// affichage des attributs d'un objet CAutomobile
cout << "Les caracteristiques de ces lunettes se trouve dans l'adresse memoire: " << this << ". Elles sont les suivantes:" << endl;
cout << " nom du boitier: " << m_prix << " ; sa couleur: " << m_dimension << " ; son volume: " << m_styleMode << endl;
} |
et enfin voici celui de CBoitierLunettes, celui qui me pose problème:
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 "Les_entetes.h"
using namespace std;
//***************************************************
CBoitierLunettes::CBoitierLunettes(std::string couleur, std::string nomEtiquette, int volume, CLunettes& a)
{
m_couleur = couleur;
m_nomEtiquette = nomEtiquette;
m_volume = volume;
CesLunettes = CLunettes& a;
}
// ***********************************************
void CBoitierLunettes::Afficher()
{
// affichage des attributs d'un objet CAutomobile
cout << "Les caracteristiques de ce boitier se trouve dans l'adresse memoire: " << this << ". Elles sont les suivantes:" << endl;
cout << " nom du boitier: " << m_nomEtiquette << " ; sa couleur: " << m_couleur << " ; son volume: " << m_volume << endl;
// j'aimerai aussi afficher les caracteristique des lunettes qui lui sont debies
CesLunettes = new CLunettes();
CesLunettes ->Afficher();
delete CesLunettes;
} |
en effet, quand je compile, j'obtiens un erreur que je n'arrive pas à corriger:
C:\Users\hp user\Desktop\open_class_room\codage_aggregation\CBoitierLunettes.cpp||In constructor 'CBoitierLunettes::CBoitierLunettes(std::string, std::string, int, CLunettes&)':|
C:\Users\hp user\Desktop\open_class_room\codage_aggregation\CBoitierLunettes.cpp|12|error: expected primary-expression before '&' token|
C:\Users\hp user\Desktop\open_class_room\codage_aggregation\CBoitierLunettes.cpp||In member function 'void CBoitierLunettes::Afficher()':|
C:\Users\hp user\Desktop\open_class_room\codage_aggregation\CBoitierLunettes.cpp|22|error: no matching function for call to 'CLunettes::CLunettes()'|
C:\Users\hp user\Desktop\open_class_room\codage_aggregation\Les_entetes.h|36|note: candidates are: CLunettes::CLunettes(int, int, std::string)|
C:\Users\hp user\Desktop\open_class_room\codage_aggregation\Les_entetes.h|26|note: CLunettes::CLunettes(const CLunettes&)|
||=== Build finished: 2 errors, 0 warnings ===|
C'est précisément au niveau du codage de l’agrégation. J'ai beau relu mes cours, je ne vois pas mes erreurs. Par la même occasion qui quelque peut me proposer un livre qui parle du passage de UML à C++ je suis partante.
Merci d'avance pour les personnes qui prendrons la peine de me répondre
Partager