J'avoue que j'ai quand même été surpris que tu puisses, comme cela, initialiser les champs privés de Date dans la classe Personne, alors que cette dernière n'est pas friend.
Mon première réflexe aurait été de dire "Ce n'est pas trop joli-joli tout ça... Crée plutôt un champ const statique "Date:: DEFAUT" qui contiendrait cette date par défaut".
Et ben, comme par hasard, de faire ça, ça résoud ton problème.
Je m'explique. Si tu déclare une variable locale comme suit:
Date maDate = (1, 1, 1981);
date vaut (jour=1981, mois=1, annee=1980). Rigolo, c'est vrai, mais pendant un temps limité seulement...
Par contre, si tu la déclares ainsi:
Date maDate (1, 1, 1981);
date vaut (jour=1, mois=1, annee=1980).
Bref, c'est le '=' qui est la cause du problème.
Donc déclare ceci dans ta classe Date:
static const Date DEFAULT;
Puis ceci, accompagnant le constructeur et le destructeur de Date:
const Date Date:: DEFAULT(1, 1, 1980);
Et tu pourras écrire, dans la class Personne:
Personne(Date prmDateNai = Date:: DEFAULT) ;
Et ton programme marchera comme il faut.
--Message édité par BifaceMcLeOD--