CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Erreur C++

Vieille_Merde
Vieille_Merde
Niveau 5
06 juillet 2007 à 02:07:02

Salut, j´essaie de compiler un programme qui compilait bien avec VS 2005 et maintenant j´essaie de le compiler sur Linux(G++) avec KDevelop et j´obtient l´erreur suivante:

/home/mic/Morpion/src/Case.h:7: error: a storage class can only be specified for objects and functions

Voici le bout de code correspondant:

class CCase
{
public:
static enum Proprietaire {Personne, Joueur1, Joueur2}; // Erreur ici

CCase(Proprietaire propCase = Personne);
virtual ~CCase(void);

Proprietaire getCase() const;
void setCase(const Proprietaire prop);
void Afficher() const;
private:
Proprietaire m_propCase;

};

Pourtant ça compilait avant.. et je comprends pas vraiment l´erreur..
Quelqu´un aurait-il une solution?

Vieille_Merde
Vieille_Merde
Niveau 5
06 juillet 2007 à 02:09:45

Arr... c´est tout con, j´ai enlevé le static et maintenant ça compile... Mais je comprends toujours pas pourquoi on ne peut pas mettre cet enum en static..

[Erosquare[
[Erosquare[
Niveau 10
06 juillet 2007 à 10:05:02

C´est parce que t´es une vieille merde :noel:

Fvirtman
Fvirtman
Niveau 10
06 juillet 2007 à 10:15:36

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)

Vieille_Merde
Vieille_Merde
Niveau 5
07 juillet 2007 à 04:19:49

Merci FVirtman, je crois que je comprends pas mal mieux les static maintenant. Je savais pas que seule les fonctions membre pouvaient accéder aux variables de ce type.

Une autre chose apprise :content:

kufa
kufa
Niveau 9
07 juillet 2007 à 15:23:52

oui mais c´est faut.
http://rafb.net/p/lI8rFc86.html est totalement valide

Vieille_Merde
Vieille_Merde
Niveau 5
07 juillet 2007 à 18:28:16

Euh jveux dire les fonctions membres statiques*

Fvirtman
Fvirtman
Niveau 10
07 juillet 2007 à 18:38:40

Oui, c´est vrai, il y a d´autres maniere d´accéder aux données membres statiques, grace a l´opéarateur de portée ::

Ce qu´il faut retenir finalement, c´est que si tu déclares une variable statique en donnée membre, elle est commune a toutes les instances :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment