Bonjour,
je suis debutant en c++ et j'ai besoin de votre aide sur un point delicat. Je dois effectuer une surcharge de l'operateur = sur une classe fille avec des attributs const. J ai du mal a comprendre comment attribuer les bons arguments aux champs privates de la classe mere. De plus je ne comprends pas pourquoi le compiler refuse la ligne suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 StartAge = o.GetStartAge
Voici le code en entier:
(les consignes de l'exercice m'obligent a ne pas modifier la classe mere)

classe mere:
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
 
class CBaseApplication
{
public:
 
    // Class constructor receives this application name.
    CBaseApplication(const string strName);
 
    // Class destructor.
    virtual ~CBaseApplication();
 
 
    // This function returns this application name.
    string GetName() const
    {
        return m_strName;
    }
 
private:
 
    // Private copy constructor and assignment operator in order to prevent
    // this object copying.
    CBaseApplication(const CBaseApplication& o);
    CBaseApplication& operator=(const CBaseApplication& o);
 
    // The application name.
    const string m_strName;
 
};
 
CBaseApplication::CBaseApplication(const string strName): m_strName(strName)
{
}
 
CBaseApplication::~CBaseApplication()
{
}
classe fille:
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
class CGame : public CBaseApplication
{
public:
    CGame(const string strName = "", int start = 0, int end = 99); //constructeur

	CGame(const CGame& o);// constructeur par recopie

	CGame& operator=(const CGame& o){
		//Comment recopier le nom du game ??
		StartAge = o.GetStartAge;
		EndAge = o.GetEndAge;
		return this;
	}

	
	int GetStartAge() const{ 
		return StartAge; 
	} 
	int GetEndAge() const{ 
		return EndAge; 
	} 

private:
	const int StartAge;
	const int EndAge;
};

CGame::CGame(const string strName, int start, int end): CBaseApplication(strName), StartAge(start), EndAge(end)
{
	if ((start < 0) || (start > 99) || (end < 0) || (end > 99) || (start < end))
		throw CWrongAgeException();
}

CGame::CGame(const CGame& o): CBaseApplication(o.GetName()), StartAge(o.StartAge), EndAge(o.EndAge){
}
La classe mere ne peut pas etre modifie. La classe peut etre totalement modifie mais les champs prives doivent restes const.

Merci pour votre aide.