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 :

Fonctions membres static - undefined reference


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 16
    Points
    16
    Par défaut Fonctions membres static - undefined reference
    Bonjour,

    J'ai consulté la FAQ sur les fonctions static mais je n'y ai pas trouvé la réponse attendue...

    J'ai deux classes qui n'ont que des fonctions membres static (aucun attribut) : foo et bar. Je les utilise comme des réservoirs à fonctions autour d'une thématique particulière.
    Je ne peux pas modifier foo, elle provient d'une autre librairie.

    D'habitude je les utilise dans mon code sans les déclarer : foo::machin(...);

    J'ai récemment rajouté une fonction membre static à bar qui fait appel à une fonction membre static de foo. Et là : parfois ça compile, parfois non...

    Je pense que c'est une histoire de fiasco dans l'ordre d'initialisation mais comme je n'ai aucun attribut et que je n'ai jamais instancié ces classes pour les utiliser, je ne vois pas trop comment m'en sortir.

    Quoi que si : appeler en début de code une fonction membre de foo évite tout problème. Mais j'aimerais autant que ça soit automatique.

    Merci pour les conseils.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par OliveK Voir le message
    J'ai deux classes qui n'ont que des fonctions membres static (aucun attribut) : foo et bar. Je les utilise comme des réservoirs à fonctions autour d'une thématique particulière.
    Pourquoi ne pas définir des fonctions libres dans un namespace ?

    Citation Envoyé par OliveK Voir le message
    D'habitude je les utilise dans mon code sans les déclarer : foo::machin(...);

    J'ai récemment rajouté une fonction membre static à bar qui fait appel à une fonction membre static de foo. Et là : parfois ça compile, parfois non...
    Un problème d'include de fichier d'en-tête. Parfois il est implicitement inclus avant et parfois non ?
    Citation Envoyé par OliveK Voir le message
    Je pense que c'est une histoire de fiasco dans l'ordre d'initialisation mais comme je n'ai aucun attribut et que je n'ai jamais instancié ces classes pour les utiliser, je ne vois pas trop comment m'en sortir.
    Cela ne concerne que les objets instanciés pas les fonctions.
    Citation Envoyé par OliveK Voir le message
    Quoi que si : appeler en début de code une fonction membre de foo évite tout problème. Mais j'aimerais autant que ça soit automatique.

    Merci pour les conseils.
    Peux-tu recréer un exemple minimal qui reproduit ton problème ?

Discussions similaires

  1. fonction externe et fonction membre static
    Par tenderstoune dans le forum C++
    Réponses: 5
    Dernier message: 15/05/2011, 18h50
  2. Fonctions membres static - undefined reference
    Par OliveK dans le forum C++/CLI
    Réponses: 3
    Dernier message: 09/10/2010, 00h40
  3. Variable static dans une fonction membre
    Par uriotcea dans le forum C++
    Réponses: 8
    Dernier message: 09/07/2009, 14h48
  4. Réponses: 3
    Dernier message: 12/01/2006, 21h26
  5. Réponses: 3
    Dernier message: 28/11/2005, 12h15

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