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 :

Problème avec une fonction non static


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Par défaut Problème avec une fonction non static
    Bonjour,

    Je suis entrain de faire un projet en C++ et j'ai un petit problème.

    En faite, j'ai deux fichiers .cpp (Ball.cpp et Golf.cpp) et je voudrais modifier une variable de la class Golf à partir de la class Ball.

    Voici le code de ma fonction de modification de ma variable qui est dans Golf.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void Golf::setMouvement()
    {
    	mouvement = false;
    }
    Et voici l'appel de la fonction qui est dans Ball.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Golf::setMouvement();
    Le problème est que lorsque je compile, j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2352: 'Golf::setMouvement' : appel non conforme d'une fonction membre non static
    Si vous pourriez m'aider, ce serait gentil.

    Merci

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Ta fonction n'est pas déclarée static. Il faut donc un objet pour l'appeler.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Par défaut
    Quand je l'a déclare en static voici ce que cela me met comme erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2597: référence non conforme à un membre non static 'Golf::mouvement'

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Les fonction statiques sont des fonctions qui sont independante de toutes instances de classes. Donc, on ne peut l' utiliser qu' avec la sintaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_classe::fonction_static();
    Pour une fonction non statique, il faut obligatoirement avoir une instance de cette classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nom_classe objet1;
    objet1.fonction_non_statique();

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Par défaut
    Pourquoi quand je la déclare en static cela ne marche pas ?

  6. #6
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Fais nous voir la definition de la classe. Plus d' avantage de code, aidera à trouver plus rapidement une solution.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 37
    Par défaut
    Alors voici la définition de setMouvement() dans le Golf.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static void setMouvement();
     
    bool mouvement;
    Voici le code de setMouvement() dans Golf.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void Golf::setMouvement()
    {
    	mouvement = false;
    }
    Et voici l'appel de la fonction dans Ball.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Golf::setMouvement();

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

Discussions similaires

  1. problème avec une fonction javaScript
    Par volthur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2006, 18h04
  2. Problème avec une fonction utilisateur !
    Par nalou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2006, 17h06
  3. [debutant] get image avec une variable non static
    Par laguna dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2006, 15h57
  4. Problème avec une fonction et un array
    Par Neal Morse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/08/2005, 12h04
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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