Bonjour à tous,
Voici le programme minimaliste de test pour mon problème :
Il ne compile pas, car :
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 #include <iostream> const char* Test::pC[] = { "lol", "lil", "lul" }; static class Test { public: static const char* pC[]; } int main() { std::cout << "Array size is : " << sizeof(Test::pC)/sizeof(char*) << std::endl; return 0; }
Si j'enlève ma classe, tout va bien.main.cpp:12:54: error: invalid application of ‘sizeof’ to incomplete type ‘const char* []’
Je comprend qu'une variable statique dans une classe, sera initialisée avant l'appel au main. Du coup, le code remplissant mon tableau, c'est pas vraiment interprété par le compilateur et donc, il n'est pas capable de dire quelle est la taille réelle du tableau. Pourtant, la syntaxe est juste en soit.
Je ne comprend pas vraiment ce comportement. Je vois bien que la taille du tableau ne peut être déterminée que lors de l'exécution, mais alors, cette syntaxe, comment se fait t-elle qu'elle soit juste ?
Pouvez-vous me détailler tout le comportement du compilateur dans un tel cas et pour j'ai ce message d'erreur ?
Partager