Salut, j'ai beson de quelques informations sur une "subtilité" du langage.

Ce code compile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#include "syn_elt.hpp"
int main(int argc, char *argv[]){
        SYN_ELT *test = new SYN_ELT(1, 2, 3, "test");
        return 0;
}
Ce code compile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#include "syn_elt.hpp"
int main(int argc, char *argv[]){
        SYN_ELT *test;
        test = new SYN_ELT(1, 2, 3, "test");
        return 0;
}
Ce code compile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#include "syn_elt.hpp"
int main(int argc, char *argv[]){
        SYN_ELT test = SYN_ELT(1, 2, 3, "test");
        return 0;
}
Mais ce code ne compile pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#include "syn_elt.hpp"
int main(int argc, char *argv[]){
        SYN_ELT test;
        test = SYN_ELT(1, 2, 3, "test");
        return 0;
}
Plus précisément le dernier bout de code tente d'appeler le constructeur SYN_ELT() dès la déclaration. Ce constructeur n'est pas défini. Cela signifie t-il qu'on doit obligatoirement utiliser un pointeur pour déclarer une classe et appeler le constructeur plus tard ? Quelle est la raison de ce comportement ?

Merci de m'éclairer