Bonsoir tout le monde,

J'ai un petit problème avec mon constructeur spécifique.

voici tout d'abord le constructeur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CVoiture::CVoiture(const char* UneImmatriculation,short UnNombreDePlace,double UnVolumeTransportableDeMarchandise)
:Vehicule3(UneImmatriculation),Vehicule3(UnNombreDePlace),m_VTM(0.0)
{
	VTM(UnVolumeTransportableDeMarchandise);
}
et voici les messages d'erreur :

error C2664: '__thiscall Vehicule3::Vehicule3(const class Vehicule3 &)' : cannot convert parameter 1 from 'short' to 'const class Vehicule3 &'
Reason: cannot convert from 'short' to 'const class Vehicule3'

No constructor could take the source type, or constructor overload resolution was ambiguous
et le second qui est un peu plus clair :
error C2437: 'Vehicule3' : already initialized
Voici le .h de CVoiture :

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
class CVoiture : public Vehicule3
{
public:
	CVoiture();
	CVoiture(const CVoiture& Modele);
	CVoiture(const char* UneImmatriculation,short UnNombreDePlace,double UnVolumeTransportableDeMarchandise);
	~CVoiture();
 
	bool		VTM(double UneValeurTransportableDeMarchandise);
 
private:
	double		m_VTM; //Volume transportable de marchandise
 
 
};
et voici le .h de Vehicule 3 :

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 Vehicule3
{
public:
 
	Vehicule3();
	Vehicule3(const Vehicule3& Modele);
	~Vehicule3();
 
 
 
	bool		Immatriculation(const char* UneImmatriculation);
 
private:
	CChaine		m_Immatriculation;
	short		m_NombreDePersonnes;
 
 
 
};

et enfin, voici le cpp entier dans lequel il y'a les deux erreurs :

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
#include <BasicConsole.h>
#include "vehicule3.h"
#include "chaine.h"
 
 
Vehicule3::Vehicule3()
:m_Immatriculation(""),m_NombreDePersonnes(0)
{
}
 
Vehicule3::Vehicule3(const Vehicule3& Source)
:m_Immatriculation(Source.m_Immatriculation),m_NombreDePersonnes(Source.m_NombreDePersonnes)
{
}
 
Vehicule3::~Vehicule3()
{
}
 
CVoiture::CVoiture()//constructeur par défaut
:m_VTM(0.0)
{
}
 
CVoiture::CVoiture(const CVoiture& Source) //constructeur par copie
:Vehicule3(Source),m_VTM(Source.m_VTM) //une question que je me pose, est-ce que Vehicule3(Source) contient tous les membres de Véhicules3 ?
{
}
 
CVoiture::CVoiture(const char* UneImmatriculation,short UnNombreDePlace,double UnVolumeTransportableDeMarchandise)
:Vehicule3(UneImmatriculation),Vehicule3(UnNombreDePlace),m_VTM(0.0)
{
	VTM(UnVolumeTransportableDeMarchandise);
}
 
CVoiture::~CVoiture()
{
}
 
bool CVoiture::VTM(double UneValeurTransportableDeMarchandise)
{
	if(UneValeurTransportableDeMarchandise <= 0.0) return false;
	m_VTM = UneValeurTransportableDeMarchandise;
	return true;
 
}
 
CTabVoitures::CTabVoitures()
:m_Nombre(0),m_Tableau(NULL)
{
}
 
CTabVoitures::~CTabVoitures()
{
}
 
CLeTout::CLeTout()
{
 
}
 
CLeTout::~CLeTout()
{
 
}
 
 
 
bool CLeTout::FctnTraiterLigne(const CChargeurFichierTexte& CC, void* Contexte)
{
	return ((CLeTout*)Contexte)->TraiterLigne(CC);
}
 
 
 
bool CLeTout::Charger(const char* NomFichier) //copie telle quelle
{
	CChargeurFichierTexte	Chargeur;
 
	/*chargeur.Charger, je lui passe le nom du fichier et le contexte et il faudra aussi lui 
	  passer le séparateur de caractère qui est utilisé par la méthode "Définir" de la classe 
	  "CChaineComposée" et il faut aussi lui passer en plus du contexte la fonction qu'il doit 
	  appeler, ça sera "FctnTraiterLigne", ici je lui passe l'adresse de cette fonction là.*/
	return Chargeur.Charger(NomFichier,'\t',CLeTout::FctnTraiterLigne,this);
}
 
bool CLeTout::TraiterLigne(const CChargeurFichierTexte& CC)
{
	if (strlen(CC.Champs(0)) == 1) switch (CC.Champs(0)[0])
	{
		case 'V':
			//if (CC.NombreChamps() == 3) m_TV.Ajouter(CVoiture(CC.Champs(1),atof(CC.Champs(2)),atof(CC.Champs(3))));
			break;
	}
	return true;
}
Le problème doit venir du fait qu'il croit que Vehicule3 est déclaré deux fois mais il me semble que ce n'est pas le cas ?

Merci d'avance pour votre aide.

beegees