Oui, attention, quand tu fais ça :
static enum Proprietaire {Personne, Joueur1, Joueur2}; // Erreur ici
Tu définis un type, et non une variable.
c´est comme si tu écrivais :
static int; // ça ne veut rien dire.
par contre,
static int a; // ça oui.
tu pourrais faire :
enum Proprietaire {Personne, Joueur1, Joueur2};
static Proprietaire p; // la tu définis p comme étant une enum statique.
Attention cependant a mot clef static dans les classes :
Il permet de "partager" une donnée entre toutes les instances d´une classe.
Du coup, si tu fais :
CCase a,b,c,d; // 4 instances
si tu changes p dans a, alors il sera changé aussi dans b,c,d car la variable p étant statique dans la classe est la meme pour toutes les instances.
Il est a noter que les variables statiques dans les classes peuvent se manipuler qu´avec des méthodes statiques elle meme.
Etait il vraiment nécessaire de mettre static ?
Visual 2005 contient ce qu´on appelle une "extention de langage", c´est a dire qu´il est permissif sur certains codes : tu mets static la ou il ne faut pas, alors il l´ignore et c´est tout.
--> C´est mal selon moi, mais heureusement, ça peut se désactiver. Donc tu peux rendre Visual 2005 ANSI :
va dans les projets settings de ton projet, trouve la branche "C/C++", puis "Language", puis "Disable Extention" : met YES. (/Za)