Tiens, j'ai des warnings de ce genre (j'ai activé tous les warnings possibles jusqu'à --pedantic) :
||=== Anniv, Release ===|
||=== Anniv, Release ===|
/mnt/Data/Programmation/PC/Anniv/contact.cpp||In constructor ‘Contact::Contact()’:|
/mnt/Data/Programmation/PC/Anniv/contact.cpp|15|warning: ‘Contact::m_firstname’ should be initialized in the member initialization list|
/mnt/Data/Programmation/PC/Anniv/contact.cpp|15|warning: ‘Contact::m_lastname’ should be initialized in the member initialization list|
/mnt/Data/Programmation/PC/Anniv/contact.cpp|15|warning: ‘Contact::m_birthday’ should be initialized in the member initialization list|
/mnt/Data/Programmation/PC/Anniv/contact.cpp|15|warning: ‘Contact::m_celebration’ should be initialized in the member initialization list|
/mnt/Data/Programmation/PC/Anniv/contact.cpp|15|warning: ‘Contact::m_mariage’ should be initialized in the member initialization list|
Pourquoi ? Mon constructeur est écrit comme ça :
Contact::Contact()
{
std::string s;
Date d;
DateYear dy;
m_firstname = s;
m_lastname = s;
m_birthday = dy;
m_celebration = d;
m_mariage = dy;
}Et voici les constructeurs sans arguments de Date et DateYear :
Date::Date()
{
m_day = 0;
m_month = 0;
}DateYear::DateYear()
{
m_day = 0;
m_month = 0;
m_year = 0;
}Tout me semble parfaitement initialisé, même si les valeurs ne veulent rien dire (mais sont gérées en tant que dates nulles par les autres méthodes). Le 'Date d', et 'DateYear dy' appellent bien les constructeurs par défaut, initialisant tous les membres, non ?
Je n'ai pas défini de constructeur d'affectation (Date:

ate(const & Date)), c'est pour ça ? Mais alors, quel est le mécanisme de ce qui se passe ici ? Et j'ai les mêmes warnings pour mes autres constructeurs par défaut Date() et DateYear()...[nosmile]