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 :

bien utiliser vector<char>


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut bien utiliser vector<char>
    bonjour,
    je cherche un tuto complet sur la classe vector mais je n'ai pas trouvé.

    Code header : 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
    // header
    #ifndef CLIENT_H
    #define CLIENT_H
    #include <vector>
     
    #ifndef _CLIENT
    #define _CLIENT
     
    using namespace std;
     
    class client
    {
    private:
    	vector<char> cli_nom;
    	vector<char> cli_adresse;
    	maillon_app *liste_appel;
    public:
    // constructeur/destructeur
    	client();
    	client (vector<char>, vector<char>);
    // accesseurs
    	vector<char> get_nom();
    	vector<char> get_adresse();
    // modificateurs  penser à utiliser strcpy pour passer de string à char*
    	void set_nom(vector<char>);
    	void set_adresse(vector<char>);
    // fonctions de la classe
    	appel creer_appel(void);
    	void ajouter_appel(appel, maillon_app);
    }

    ma question est : comment faire le constructeur par défaut pour que cli_nom contienne "anonyme" par exemple ?

    merci d'avance de vos réponses

    Korhy

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Utilise std::string plutôt.

    MAT.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    oui c'est bien std::string, mais en fait il m'est demandé explicitement
    un client est défini par son nom, son adresse (pointeurs vers 2 tableaux dynamiques de char)

  4. #4
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Edit : pas vu la consigne : ouai donc c'est des char* qu'il te faut .

  5. #5
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Citation Envoyé par Korhyana Voir le message
    oui c'est bien std::string, mais en fait il m'est demandé explicitement
    Dans ce cas là, il faut utiliser des char * et les operateurs new [] et delete []

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par Korhyana Voir le message
    un client est défini par son nom, son adresse (pointeurs vers 2 tableaux dynamiques de char)
    Ah c'est un char* alors et pas un std::vector< char >.

    ps: il ne faut pas mettre de directive using namespace dans un header.

    MAT.

  7. #7
    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, et bienvenue sur le forum...

    Visiblement, ce que l'on te demande est un exercice et, au vu de la ligne d'énoncé que tu nous présente, j'aurais presque tendance à croire que ton (prof ) s'attend à ce que tu n'utilise... ni la classe string, ni la classe vector

    Dans ce cas, tu ne devrait pas utiliser std::vector<char> mais... char*, et te "pallucher" toute la gestion "à la main", manière "C style"

    Cela te donnerait un code proche de
    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
    class client
    {
        private:
            char* cli_nom;
            char* cli_adresse;
        public:
            client():cli_nom(new char[8])/*,...*/
            {
                strcpy(cli_nom,"anonyme");
                /*...*/
            }
            client(char* n):cli_nom(new char [strlen(n)])/*,...*/
            {
                strcpy(cli_nom,n);
                /*...*/
            }
            ~client()
            {
                delete[] cli_nom;
            }
    };
    Ceci dit, le nom d'un client est - par définition - immuable (il y a peu de chances que Jacques change de nom et s'appelle Jaqueline ) et impérativement nécessaire pour l'identification d'un client particulier.

    Il ne me semble donc pas vraiment opportun de rendre cette classe défaut constructible en définissant un constructeur ne nécessitant pas d'argument

    En effet, dans la gestion de la clientèle, seuls les clients dont le nom est connu ont un intérêt, et l'utilisation d'un client anonyme ne se justifie, en définitive, que dans le cadre de "ventes comptoirs"...

    Je te déconseillerais donc de transformer l'exception (la vente comptoir) en règle en permettant de créer d'office un client anonyme

    Il serait bien plus opportun de dire que, par défaut, il faut un nom pour le client et d'assumer l'exception à cette règle en disant que, dans le cas d'une vente comptoir, le client est d'office "anonyme", sauf si le client accepte de donner ses... données personnelles

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    super pour toutes vos réponses merci bcp
    problème résolu
    effectivement, le cas du client anonyme n'est pas à prendre en compte.
    J'ai fait mon mouton "constructeur sans arg + constructeur avec" sans réfléchir encore une fois

    et effectivement, c'est un "projet" demandé par un prof

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

Discussions similaires

  1. vector<unsigned char> et unsigned char* : conversion ?
    Par zax-tfh dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/01/2006, 10h43
  2. document pour bien utiliser pgadmin
    Par hama dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/11/2005, 11h36
  3. Réponses: 19
    Dernier message: 28/04/2005, 15h36
  4. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  5. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37

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