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