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ébutant]Accès à une classe


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut [débutant]Accès à une classe
    Bonjour à vous tous. J'ai un petit problème depuis quelques jours et j'ai passé des heures à rechercher l'erreur mais j'ai toujours pas trouvé. Ce que je dois faire me parais simple mais sa ne marche toujours pas. Je dois être capable d'accéder au vector qui est dans la classe ClAgenda à partir de la classe ClRendezVous. J'ai dans ma classe ClRendezVous une fonction membre nommé AjouterRendezVous et je désire enregistrer les infos entrés dans le vector de la classe ClAgenda. Merci beaucoup de votre aide.

    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
    #include<iostream>
    #include<vector>
    #include "ClRendezVous.h"
     
    class ClAgenda
    	{
    	public:
    		ClAgenda(std::ifstream& p_es_fic);
    		~ClAgenda();
     
     
    	private:
    		std::string m_nomFichier;
    		std::vector<ClRendezVous> m_agenda;
    	};
    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
    17
    18
    #include <iostream>
     
    class ClAgenda;
     
    class ClRendezVous
    	{
    	public:
    		ClRendezVous(void);
    		static void AjouterRendezVous();
     
    	private:
    		int m_année;
    		int m_mois;
    		int m_jour;
    		int m_heure;
                              ClAgenda* m_agenda;
    		std::string m_description;
    	};
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include "ClRendezVous.h"
    #include <iostream>
    #include <fstream>
    #include <string>
     
    ClRendezVous::ClRendezVous(void)
    	{
    	}
     
    void ClRendezVous::AjouterRendezVous()
    	{
    	ClRendezVous nouveauRendezVous;
    	std::cout << "INFORMATIONS SUR LE RENDEZ-VOUS\n\n"
    			  << "Veuillez entrer l'année: \n";
    	std::cin >> nouveauRendezVous.m_année;
    	std::cin.ignore();
     
    	std::cout << "Entrez maintenant le mois en format chiffre(ex. 1= Janvier): \n";
    	std::cin >> nouveauRendezVous.m_mois;
    	std::cin.ignore();
     
    	std::cout << "Poursuivez maintenant en entrant la date: \n";
    	std::cin >> nouveauRendezVous.m_jour;
    	std::cin.ignore(); 
     
    	std::cout << "Veuillez entrer l'heure de votre rendez-vous: \n";
    	std::cin >> nouveauRendezVous.m_heure;
    	std::cin.ignore();
     
    	std::cout << "Veuillez entrer la description du rendez-vous: \n";
    	getline(std::cin, nouveauRendezVous.m_description);
     
                 m_agenda. //erreur je n'ai pas accès à la librairie de mon vector ??
    	}

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    Salut,

    Tu ne peux pas implémenter la méthode ajouterRendezVous dans ClAgenda ?
    Avec ce genre de prototype:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouterRendezVous(const ClRendezVous& rdv);
    Ça me parait plus logique d'ajouter un rdv depuis l'agenda ^^

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    La règle d'or en programmation, c'est la délégation des taches...

    Alors, selon toi, est-il plus logique que la responsabilité d'"ajouter un rendez vous" reviennen... au rendez vous, ou qu'elle revienne... à l'agenda

    Et, à bien y réfléchir, est-ce qu'un rendez-vous a réellement besoin de savoir de quel agenda il est sorti

    Dans le même ordre d'idée, la deuxième règle est... que chaque classe doit s'occuper d'elle-même et que c'est déjà beaucoup...

    Si une classe a plus d'une responsabilité, c'est sans doute qu'elle en a une (ou plusieurs) de trop.

    Dés lors, te semble-t-il logique qu'un agenda soit responsable... du fichier qui s'occupe de la persistance

    Ne crois tu pas que la gestion de la persistance devrait être dévolue à une (ou deux) classe(s) qui ne s'occuperaient que de cela (ouvrir le fichier et écrire ou lire dedans pour, le cas échéans, recréer chaque rendez-vous de l'agenda et l'agenda lui-même)

    Enfin, voilà... ces quelques réflexions me font dire que la méthode AjouterRendezVous serait bien mieux à sa place dans la classe Agenda, et en n'étant pas statique

    Il serait d'ailleurs utile de fournir quelques comportement propres à l'agenda: rechercher un rendez-vous par date, heure, personne de contact ou autre, par exemple

    Maintenant, si tu tiens à ce que le comportement AjouterRendezVous échoie à ton rendez-vous (mais bon, tu auras compris que je ne le recommande vraiment pas ), il y a deux solutions:
    • Rendre le vecteur de rendez vous publique dans l'agenda, mais bon, ce n'est quand même pas la meilleure idée que tu puisse avoir...
    • déclarer la classe Rendez-vous amie de la classe Agenda, ce qui aura au moins le mérite de ne pas exposer le vecteur de rendez-vous à trop de monde

    Tu l'auras compris, les deux solutions envisagées sont loin d'être idéales, ce qui renforce l'intérêt de placer cette méthode dans la classe Agenda

  4. #4
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Merci de votre aide effectivement il devait se retrouver dans la class ClAgenda. Toute marchait jusqu'au moment ou j'ai changer ma fonction ajouterRendezVous. Je recois 4 erreurs de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	1	error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
    Ces erreurs pourraient parvenir d'ou? Merci d'avance de votre aide.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Nouveau code?

Discussions similaires

  1. [VBA] [CLASS] accès à une classe d'une autre base
    Par gsilber dans le forum Contribuez
    Réponses: 5
    Dernier message: 29/02/2016, 12h38
  2. Réponses: 7
    Dernier message: 12/04/2007, 15h22
  3. Réponses: 7
    Dernier message: 17/05/2006, 12h20
  4. [Débutant]Passer une classe abstraite en paramètre
    Par Invité dans le forum Débuter
    Réponses: 2
    Dernier message: 06/01/2006, 17h56
  5. [Visual C++6] Accès à une classe d'une dll
    Par charliejo dans le forum MFC
    Réponses: 12
    Dernier message: 09/03/2005, 16h48

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