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 :

Définition d'une fonction static ?


Sujet :

C++

  1. #1
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut Définition d'une fonction static ?
    Bonjour,

    Une petite question toute bête.

    Supposons que je déclare une fonction static dans un fichier .h

    static void maFnStat(int a, int b);

    est ce que je dois remettre le mot clé static lors de la définition de ma fonction ?

    Et quand est-il si je déclare ma fonction static en tant que fonction membre d'une classe ?

    Merci

  2. #2
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    oui tu dois remettre le mot clé static dans tous les cas

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut Re: Définition d'une fonction static ?
    Citation Envoyé par tintin72
    Supposons que je déclare une fonction static dans un fichier .h

    static void maFnStat(int a, int b);
    Quel interet d'avoir des declarations de fonctions statiques dans des .h. L'objectif des .h est de partager des declarations entre unites de compilations. L'objectif des fonctions statiques a ce niveau est de ne pas partager des definitions. Ca me semble contradictoire.

    est ce que je dois remettre le mot clé static lors de la définition de ma fonction ?
    Non.

    Et quand est-il si je déclare ma fonction static en tant que fonction membre d'une classe ?
    Non.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  4. #4
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Bon, apparement plusieurs écoles s'affrontent

    oui tu dois remettre le mot clé static dans tous les cas
    Non
    Que faire exactement alors ?

    Quel interet d'avoir des declarations de fonctions statiques dans des .h. L'objectif des .h est de partager des declarations entre unites de compilations. L'objectif des fonctions statiques a ce niveau est de ne pas partager des definitions. Ca me semble contradictoire.

    En fait c'est parce que j'ai beaucoup de fonction static définit dans mon fichier cpp et que j'aimerais réduire le nombre de lignes en mettant les fonctions static dans un autre fichier cpp. Mais forcément les appels aux fonctions static provoque une erreur du compilo qui me dit que ces fonctions ne sont pas définis. C'est pour ça que j'ai pensé aux déclarations dans un fichier .h. Mais si tu as une autre solution je suis preneur.

  5. #5
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    Citation Envoyé par tintin72
    Que faire exactement alors ?
    suivre les conseil du membre le plus ancien, parceque je donne des réponses a priori et il semble que ma mémoire me joue des tours !

  6. #6
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par tintin72
    Quel interet d'avoir des declarations de fonctions statiques dans des .h. L'objectif des .h est de partager des declarations entre unites de compilations. L'objectif des fonctions statiques a ce niveau est de ne pas partager des definitions. Ca me semble contradictoire.
    En fait c'est parce que j'ai beaucoup de fonction static définit dans mon fichier cpp et que j'aimerais réduire le nombre de lignes en mettant les fonctions static dans un autre fichier cpp.
    Si elles sont statiques, par definition elles ne sont pas appelable d'une autre unite de compilation. Enleve le static alors.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  7. #7
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Donc en gros, si je veux que mes fonctions soient static (dans mon cas elles doivent l'être), je dois les laisser dans le même fichier où elles sont appelées. Sinon je laisse tomber le static et je défini des fonctions normales, c'est ça ?

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Si elles sont statiques, par definition elles ne sont pas appelable d'une autre unite de compilation. Enleve le static alors.
    Je ne comprends pas la remarque? Si la fonction est statique dans une classe, sa "staticité" permet de l'appeler même si on n'a pas d'instance actuelle (voir p.ex. le design singleton)...

    Donc une fonction statique dans un .h peut avoir du sens si elle se trouve dans une classe.

  9. #9
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    Citation Envoyé par Patrick Seuret
    Citation Envoyé par Jean-Marc.Bourguet
    Si elles sont statiques, par definition elles ne sont pas appelable d'une autre unite de compilation. Enleve le static alors.
    Je ne comprends pas la remarque? Si la fonction est statique dans une classe, sa "staticité" permet de l'appeler même si on n'a pas d'instance actuelle (voir p.ex. le design singleton)...

    Donc une fonction statique dans un .h peut avoir du sens si elle se trouve dans une classe.
    Il parle des fonctions statiques (hors methode static de classe)

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    ok, désolé...

Discussions similaires

  1. déclaration d'une fonction static
    Par salseropom dans le forum C
    Réponses: 4
    Dernier message: 09/03/2007, 16h59
  2. Réponses: 4
    Dernier message: 18/01/2007, 05h46
  3. [C#] Appel d'une fonction static impossible ?
    Par TheParadoX dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/08/2006, 10h23
  4. Réponses: 3
    Dernier message: 15/12/2005, 22h04
  5. afficher la définition d'une fonction stockée
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/09/2004, 13h28

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