Bonjour à tous,

Je vous contacte car j'ai un examen en C++ (à l'écrit) vendredi. J'ai une annale à laquelle j'ai répondu et je souhaiterais savoir si vous pourriez jeter un coup d’œil aux réponses que j'ai apporté.
Je vous joins l'annale et mes réponses:
Nom : exam2014_1 - Copie.JPG
Affichages : 166
Taille : 158,4 KoNom : exam2014_2 - Copie.JPG
Affichages : 148
Taille : 124,9 Ko

Et voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class Client {
	string nom;
	string adresse;
	AgenceLocale& agenceLocale;
 
	public:
		Client(string n="",string a="", AgenceLocale& al):nom(n), adresse(a), agenceLocale(al){}
		AgenceLocale operator() {return agenceLocale->nom;}
		void afficher() {cout << nom << adresse << *agenceLocale;}
}
//1.4 - Oui, comm il y a un autre constructeur définit dans la classe, le compilateur n'en génère pas un par défaut.
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 Employe {
	string nom;
	int id;
	AgenceLocale *agl;
 
	public:
		Employe(string ="", int i = 0):nom(n), id(i) {agl = new AgenceLocale();}
		virtual void afficher() {cout << nom << id << *agl;}
		virtual void calculerSalaire() = 0;
}
//2.4 Oui, car une classe abstraite est une classe qui possède au moins une fonction virtuelle pure. Elle n'est donc pas instanciable
//	  car elle possède une fonction qui doit être surplantée.
 
//2.5 Non, car on ne peut pas créer d'objet abstrait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class Commercial {
	float pourcentage;
	float fixe;
 
	public:
		Commercial(string n="", int i =0, float p=0.0, float f=0.0):Employer(n,i), pourcentage(p), fixe(f) {}
		public void calculerSalaire(float pourcentage, float fixe){?}
}
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
 
class AgenceLocale {
	string nom;
	Region& nomR;
	int nbEmp;
	Employe * employe;
	list<Client> c;
	list<Vente> v;
 
	public:
		AgenceLocale(string n="", Region& r, int nb = 0):nom(n), nomR(r), nbEmp(nb) {
			employe = new Employe();
			c = *new list<Client>();
			v = *new list<Vente>();
		}
		AgenceLocale(const AgenceLocale& copie) {
			nom = copie.nom;
			nomR = copie.nomR;
			nbEmp = copie.nbEmp;
			employe = copie.employe;
			employe = new Employe[copie.nbEmp];
			for(int i = 0; i < nbEmp; i++) {
				employe[i] = copie.employe[i];
			}
			c = copie.c;
			v = copie.v;
		}
 
//4.2 Oui, car l'opérateur d'affection par défaut n'est pas suffisant si on utilise des pointeurs
 
		void addEmploye(string nom, int id) {
			Employe * e = new Employe(nom, id);
			employe[nbEmp] = *e;
			nbEmp++;
		}
		Vente AgenceLocale::operator[](int i) const {
			return v[i];
		}
		ostream& operator<<(ostream& out, Client& c) {
			for(list<Clien*> ::iterator it=lclient.begin(); it != lclient.endl();++it) {
				out << it->c.nom << endl;
			}
		}
		public void calculerSalaire() {
			???
		}
		public void salaireCommerciaux() {
			???
		}
}
Les "?" présents dans mon code signifient que je ne sais pas répondre à la question.

Je vous remercie de votre aide