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 :

Function utilisable dans plusieurs classes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut Function utilisable dans plusieurs classes
    Bonjour

    Voila j'ai plusieur classes complètement differente sans heritage ni rien.

    Dans ces classes j'effectuent des opérations identique du style :
    int mafonction(int,int);

    Comment faire pour utiliser toutes ces fonctiones dans mes differentes classes?


    J'ai pour l'instant mis le mot cles externe et developpé mes fonctions dans un .h
    du style
    extern int mafontion(int i, int b){ code....}

    ET j'ai fais une inclusion de ce fichier.
    Hors ca compile mais ca ne s'execute pas.
    Ca me dis que mes fonctions sont déclarée plusieurs fois si j'inclus le fichier dans chaque classe.
    Et si je ne l'inclus pas dans chaque classe ce me dis que la fonction est inexistante dans la classe ou je l'utilise.

    ALors comment faire pour pouvoir regrouper mes fonctiones dans un meme fichier et l'utiliser dans plusieur classe?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Citation Envoyé par zulot
    Bonjour

    Voila j'ai plusieur classes complètement differente sans heritage ni rien.

    Dans ces classes j'effectuent des opérations identique du style :
    int mafonction(int,int);

    Comment faire pour utiliser toutes ces fonctiones dans mes differentes classes?


    J'ai pour l'instant mis le mot cles externe et developpé mes fonctions dans un .h
    du style
    extern int mafontion(int i, int b){ code....}

    ET j'ai fais une inclusion de ce fichier.
    Hors ca compile mais ca ne s'execute pas.
    Ca me dis que mes fonctions sont déclarée plusieurs fois si j'inclus le fichier dans chaque classe.
    Et si je ne l'inclus pas dans chaque classe ce me dis que la fonction est inexistante dans la classe ou je l'utilise.

    ALors comment faire pour pouvoir regrouper mes fonctiones dans un meme fichier et l'utiliser dans plusieur classe?
    normalement si tu inclus le .h ,qui contient la fonction que tu veu utiliser, dans la classe où tu veu l utiliser ca devrait marcher.
    t'a vérifié que tu l inclus pas deux fois le .h dans tes classes?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    Oui oui j'ai verifier.

    mon .h
    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
    16
     
     
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include "Tokeniser_.h"
     
    #ifndef FONCTIONCREATE_H
    #define FONCTIONCREATE_H
     
    using namespace std;
    .
    .
    .
     
    #endif
    Mes deux autre classe
    1.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <stdio.h>
    #include "R_create.h"
    #include "Tokeniser_.h"
    #include "mon.h"
     
    using namespace std;
    ma deuxieme
    2.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include "R_insert.h"
    #include "Tokeniser_.h"
    #include "mon.h"
    Et je ne comprend pas pourquoi ca fonctionne pas

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Deux solutions : soit déclarer la fonction dans le .h et la définir dans le .cpp, soit la définir directement dans le .h mais la précéder du mot-clé "inline".

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    oki je vais essayer ca des que je peux et je vous tiens au courant lol

    Merci en tout cas

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Par défaut
    Ce que je peux te proposer sinon c'est de declarer tes fonctions en statique dans une classe specifique.
    Je te donne un exemple:

    fichier mesfonctions.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #ifndef __DATA_FACTORY__
    #define __DATA_FACTORY__
     
    #include ....
     
    class DataFactory {
    public:
    	static int Add(int elt1,int elt2);
    	static int Sub(int elt1, int elt2);
    };
     
    #endif
    fichier mesfonctions.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    #include "mesfonctions.h"
     
    int DataFactory::Add(int elt1,int elt2)
    {
      return elt1+elt2;
    }
     
    int DataFactory::Sub(int elt1,int elt2)
    {
      return elt1-elt2;
    }
    Maintenant tu n'as plus qu'a inclure ton .h dans tous les fichiers ou tu desires utiliser tes fonctions, et la tu appels tes fonctions en faisant:

    DataFactory::Add(1,2);
    DataFactory::Sub(2,1);
    ....

    Donc pas besoin d'instancier ta classe, mais attention pour des executions dans des threads...

    En esperant que ca pourra t'aider..

    rikau2

  7. #7
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par zulot
    ALors comment faire pour pouvoir regrouper mes fonctiones dans un meme fichier et l'utiliser dans plusieur classe?
    Y'a deux choses à voir:

    1) Si la fonction dont tu parles est une fonction libre (pas membre) alors fais comme les collègues viennent de t'expliquer.

    2) S'il s'agit de fonction membre, alors tu pourrais avoir une erreur de conception. Le but étant de factoriser au maximum, il faut éviter la redondance de code...
    Ainsi, dans ce cas , il te faudrait trouver une classe mère abstraite qui implémenterait une fonction maFonction() abstraite ou non, redéfini dans tes autres classes...

    Ca dépend de ce que tu veux faire...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    Le inline fonctionne nikel merci.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/01/2015, 16h22
  2. Utiliser un attribut dans plusieurs classes
    Par skflers61 dans le forum Général Java
    Réponses: 7
    Dernier message: 20/10/2014, 21h48
  3. utiliser les mêmes variable dans plusieurs class
    Par hterrolle dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 21h11
  4. Utilisation de plusieurs classes dans une balise
    Par scorpion.os dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 12/04/2007, 18h16
  5. Utilisation de variables dans plusieurs classes
    Par dedeloux dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2005, 17h25

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