Petit problème avec le constructeur par copie
Bonjour tout le monde,
J'ai un programme sur lequel je suis bloqué depuis hier soir.
J'ai en fait deux erreurs dans la même fonction :
Citation:
error C2661: 'CVoiture::CVoiture' : no overloaded function takes 2 parameters
et
Citation:
error C2661: 'CVoiture::CVoiture' : no overloaded function takes 2 parameters
La méthode Ajouter prend un seul paramètre qui est un modele de voiture, modele veut dire un tout qui fait une voiture:
Code:
bool CTabVoitures::Ajouter(const CVoiture& Modele)
Je pense que cette fonction reçoit le model via le constructeur par copie que voici :
Code:
CVoiture(const CVoiture& Source);
Je vous remercie d'avance pour votre so precious.
beegees
PS: voici le code des deux fonctions qui pour moi posent problème
Code:
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 61 62 63 64 65 66 67 68 69 70
| #include "chaine.h"
class Vehicule3
{
public:
Vehicule3();
~Vehicule3();
short NombreDePlace;
bool Nom(const char* UnNom); //modificateur du nom
bool EstValide() const;
private:
CChaine m_Nom;
CChaine m_Immatriculation;
};
class CVoiture : public Vehicule3
{
public:
CVoiture();
CVoiture(const CVoiture& Source);
~CVoiture();
bool EstValide() const;
private:
double m_VTM; //Volume transportable de marchandise
};
class CTabVoitures
{
public:
CTabVoitures();
~CTabVoitures();
bool Ajouter(const CVoiture& Modele);
long Indice(const char* Nom) const;
private:
long m_Nombre;
CVoiture** m_Tableau;
};
class CLeTout
{
public:
CLeTout();
~CLeTout();
bool Charger(const char* NomFichier);
private:
private:
static bool FctnTraiterLigne(const CChargeurFichierTexte& CC, void* Contexte);
bool TraiterLigne(const CChargeurFichierTexte& CC);
private:
CTabVoitures m_TV; //Tableau de voitures
}; |
Code:
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| #include <BasicConsole.h>
#include "vehicule3.h"
#include "chaine.h"
FctnTraiterLigne(const CChargeurFichierTexte& CC, void* Contexte);
Vehicule3::Vehicule3()
:NombreDePlace(0)
{
}
Vehicule3::~Vehicule3()
{
}
CVoiture::CVoiture()
:m_VTM(0.0)
{
}
CVoiture::~CVoiture()
{
}
CTabVoitures::CTabVoitures()
:m_Nombre(0),m_Tableau(NULL)
{
}
CTabVoitures::~CTabVoitures()
{
}
CLeTout::CLeTout()
{
}
CLeTout::~CLeTout()
{
}
bool CLeTout::Charger(const char* NomFichier)
{
CChargeurFichierTexte Chargeur;
return Chargeur.Charger(NomFichier,'\t',CLeTout::FctnTraiterLigne,this);
}
bool CLeTout::FctnTraiterLigne(const CChargeurFichierTexte& CC, void* Contexte)
{
return ((CLeTout*)Contexte)->TraiterLigne(CC);
}
bool CLeTout::TraiterLigne(const CChargeurFichierTexte& CC)
{
if (strlen(CC.Champs(0)) == 1) switch (CC.Champs(0)[0])
{
case 'R':
if (CC.NombreChamps() == 4) m_TV.Ajouter(CVoiture(CC.Champs(1),CC.Champs(2)),CC.Champs(3),CC.Champs(4));
break;
}
return true;
}
bool CTabVoitures::Ajouter(const CVoiture& Modele)
{
if (!Modele.EstValide()) return false;
//if (Indice(Modele.Nom()) >= 0) return true;
CVoiture* AAjouter = new CVoiture(Modele);
if (AAjouter == NULL) return false;
void* Nouveau = realloc(m_Tableau,(m_Nombre+1)*sizeof(CVoiture*));
if (Nouveau == NULL)
{
delete AAjouter;
return false;
}
m_Tableau = (CVoiture**)Nouveau;
m_Tableau[m_Nombre] = AAjouter;
m_Nombre++;
return true;
}
bool CVoiture::EstValide() const
{
return (Vehicule3::EstValide()) && (m_VTM > 0);
}
bool Vehicule3::EstValide() const
{
return !m_Nom.EstVide();
} |