IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

error C2228 : la partie gauche de


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut error C2228 : la partie gauche de
    Bonjour
    voila ma classe principale:
    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>
    #include "Morpion.h"
    #include <string>
    #include <windows.h>
     
     
    using namespace std;
     
    int main()
    {
        Morpion m();
        m.demarrerJeu();
        return 0;
    }
    et voila l'erreur:
    error C2228: la partie gauche de '.demarrerJeu' doit avoir un class/struct/union


    j'ai pas pu résoudre ce probleme.
    Merci d'avance

  2. #2
    zul
    zul est déconnecté
    Membre chevronné Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Par défaut
    déclare une fonction m, prenant en entrée rien, et retournant un Morpion. Si tu veux créer un Morpion avec le ctor sans argument, il faut faire

    Bon courage

  3. #3
    Invité
    Invité(e)
    Par défaut
    On peut faire aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Morpion *m = new Morpion();
      ...
      delete m;
    Moi, je préfère.

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Tu préfères? Ah, moi je préfère la sémantique de valeur..

    Plus sérieusement y'a aucune justification pour allouer sur le tas là, et encore moins pour utiliser un raw pointer. (si ce n'est le gout du risque)

  5. #5
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    Citation Envoyé par Pierre Dolez Voir le message
    On peut faire aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Morpion *m = new Morpion();
      ...
      delete m;
    Moi, je préfère.
    On ets pas en JAVA
    la creation sur *la pile* suffit amplement.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par Pierre Dolez Voir le message
    On peut faire aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Morpion *m = new Morpion();
      ...
      delete m;
    Moi, je préfère.
    non, quand on ne doit pas utiliser de pointeurs, on en utilise pas. Si tu dois vraiment en utiliser, tu peux englober dans des pointeurs intelligents (comme boost::shared_ptr).

    Si tu fais juste "Morpion m;", il n'y a pas de delete, pas de fuites mémoires possibles, c'est sans problème.

  7. #7
    Invité
    Invité(e)
    Par défaut
    non, quand on ne doit pas utiliser de pointeurs, on en utilise pas. Si tu dois vraiment en utiliser, tu peux englober dans des pointeurs intelligents (comme boost::shared_ptr).
    Aurais-dit le contraire?
    Puisqu'il semble s'agir d'un jeu, il doit y a avoir un interface graphique et pas mal de chose. Il me parait donc "probable" qu'il est préférable d'utiliser un pointeur, mais c'est mon avis, ou plutôt ma préférence.
    Par ailleurs, les pointeurs intelligents, je connais pas, je préfère utiliser mon intelligence personnelle.
    Pour mémoire, mon compilateur ne connait pas la classe boost. et moi non plus.

  8. #8
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Si tu veux, on se bat pour arrêter d'utiliser des 'new' à tout va JAVA style alors que par défaut on utiliser l'allocation statique. C'est pas une question de préférence, c'est que c'est beaucoup plus sûr. Cette variable allouée de manière statique , on peut récupérer son adresse, la passer en référence etc..

    Un programme en C++ devrait avoir le moins de 'new' possibles.

    Sinon pour shared_ptr, il est aussi dispo dans tr1::shared_ptr, si ton compilateur le connait..

  10. #10
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Pierre Dolez Voir le message
    Aurais-dit le contraire?
    Puisqu'il semble s'agir d'un jeu, il doit y a avoir un interface graphique et pas mal de chose. Il me parait donc "probable" qu'il est préférable d'utiliser un pointeur, mais c'est mon avis, ou plutôt ma préférence.
    A vrai dire, je ne vois pas où est le problème qui t'obligerait à utiliser l'allocation dynamique de ta classe morpion pour envisager de l'utiliser avec ton IHM...

    Quel mal y aurait il à envisager un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
        Morpion m;
        MonIHM ihm(& m);
        ihm.run();
    }
    voire (et ce serait à l'extrême limite préférable, tant l'usage de l'opérateur adderss of devrait être évité chaque fois que faire se peut) d'envisager un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int main()
    {
        Morpion m;
        MonIHM ihm(m);
        ihm.run();
        return 0;
    }
    si le constructeur de ihm prend... une référence sur morpion (étant entendu que, de toutes manières, les durées de vies l'instance d'MonIHM et de celle de Morpion sont intimement liées, et que l'on a la certitude (de par la norme) que les objets sont détruits, lorsque l'on quitte la protée dans laquelle ils ont été déclarés, dans l'ordre inverse de leur déclaration)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. error c2227: la partie gauche
    Par kayenne77 dans le forum Débuter
    Réponses: 2
    Dernier message: 09/03/2009, 09h07
  2. Réponses: 3
    Dernier message: 24/06/2008, 09h29
  3. .c_str et Visual C++ == "error C2228" ?
    Par Loup solitaire dans le forum C++/CLI
    Réponses: 38
    Dernier message: 23/06/2008, 16h52
  4. appel de fonction dans la partie gauche doit renvoyer variant ou object
    Par dante33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2008, 14h16
  5. GTK, error C2228
    Par kyoshiroFR dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 05/05/2007, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo