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 :

Accèss à des fonctions entre classes


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Accèss à des fonctions entre classes
    Bonjour,

    je débute en C++ et je n'arrive pas trouver la solution à un pb qui va surement vous paraitre simple...

    en gros; j'ai 2 classes parents: la classe AccessFichier et la classe Toto.
    La classe AccessFichier gère l'access un fichier (open, close...)
    La classe Toto implémente un fonction qui écrit "toto" dans un fichier

    Puisque j'ai besoin d'implémenter un object O qui accèdent à des fichiers et qui écrit "toto", je pensais faire hériter O de AccessFichier et de Toto

    le petit pb c'est que la fonction de la classe Toto à besoin de fonctions de AccessFichier...

    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
     
    class AccessFichier{
      open(string FileName){return fopen(FileName);};
      close(FILE* F){fclose(F);};  
    };
     
    class Toto{
         void writeToto(string monFichier){
           FILE* file = open(monFichier); // appel à la méthode open de la class AccessFichier
           fwrite(file, "toto"); 
           close(file); // appel à la méthode close de la class AccessFichier
         }
    };
     
    class O : public AcessFichier, public Toto{
    }

    J'ai la vague impression que la notion de friend pourrait répondre à mon pb mais je ne comprends pas comment ca marche...

    merci d'avance pour vos réponses

  2. #2
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    avant tte chose, au lieu d'utiliser 'friend' pourquoi tu mettrais pas l'accès de tes fonctions en 'public'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class tata {
    public :
     // tes fonctions...
    };
    Je sais ps si cela peut tout résoudre, mais bon déjà t fonctions sont en 'private' là
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Effectivement là tu ne pourras jamais accéder à tes fonctions membres dans les classes dérivées. Si tu ne souhaites pas qu'elles soient visibles de l'exterieur tu peux les déclarer protected aussi.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Il faut utiliser l'héritage avec parcimonie. Normalement, il doit traduire une relation "EST UN".
    Ton objet O est-il un fichier ? Non, donc il a pas à hériter de AccessFichier.
    Ton objet O est-il un Toto ? Non, donc il a pas à hériter de Toto.
    O utilise ces 2 classes, c'est tout.
    Toto pourrait d'ailleurs être une simple fonction.

    Tu débutes en C++, alors prends de bonnes habitudes. Oublie le C (FILE*, fopen, ...) et utilise les fichiers C++ (les classes fichier exsite déjà : ifstream, ofstream, ...).
    Voir http://c.developpez.com/faq/cpp/?page=fichiers, et toute la FAQ en général, tu auras ainsi les solutions avant les problèmes

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Je confirme pour l'héritage, rien de plus pénible que de lire du code ou
    l'héritage n'est pas utilisé à bon escient.
    A+,

Discussions similaires

  1. [Flex4] Lier des fonctions entre composant
    Par Unreal Time dans le forum Flex
    Réponses: 1
    Dernier message: 07/06/2012, 15h59
  2. Comment passer des variables entre classe ?
    Par flingue dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 02/04/2009, 08h28
  3. Réponses: 2
    Dernier message: 25/09/2007, 16h53
  4. Appel de Fonction entre classes
    Par likenoother dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2006, 14h37

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