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 :

error C2661: 'CVoiture::CVoiture' : no overloaded function takes 2 parameters
et

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 : Sélectionner tout - Visualiser dans une fenêtre à part
bool CTabVoitures::Ajouter(const CVoiture& Modele)
Je pense que cette fonction reçoit le model via le constructeur par copie que voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
	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 : 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
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 : 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
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();
}