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 :

tableau membre d'une classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut tableau membre d'une classe
    Bonjour,

    J'aimerais définir un tableau d'entier vector<int> dans une classe mais j'ai un soucis avec mon code, je vous avouerai que c'est un peu déroutant pour moi contrairement à l'utilisation de variable comme attribut c'est plus simple. Alors voici le code que j'ai élaboré:

    classe.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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    #ifndef FILM_H
    #define FILM_H
     
    #include "video.h"
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    class film : public Video
    {
    public:
        //Constructeur
        film(string const& un_nom, size_t une_date,
             string nom_fichier, double une_duree, int un_chapitre);
        //Accesseurs
        int getChapitre() const;
        vector<int> getTableau() const;
        //Modifieurs
        void setTableau(vector<int> tab);
        //Methode d'affichage
        virtual void afficher(ostream&) const;
        //Destructeur
        virtual ~film(){}
    protected:
        int chapitre;
        vector<int> tableau;
    };
     
    #endif // FILM_H
    classe.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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #include "film.h"
     
    film::film(string const& un_nom, size_t une_date,
               string nom_fichier, double une_duree, int un_chapitre)
        : Video(un_nom, une_date, nom_fichier, une_duree),
          chapitre(un_chapitre)
    {
        cout << "Construction de la platforme de films " << endl;
    }
     
    vector<int> film::getTableau() const
    {
        return tableau;
    }
     
    int film::getChapitre() const
    {
        return chapitre;
    }
     
    void film::setTableau(vector<int> tab)
    {
        tableau = tab;
    }
     
    void film::afficher(ostream& sortie) const
    {
        Video::afficher(sortie);
        for(int i(0); i< getChapitre(); ++i)
        {
            sortie << "Chapitre " << i+1 << " :" << endl
                   << tableau[i] << endl;
        }
    }
    Alors je sais pas comment definir la taille du tableau, ni même comment l'initialiser en ne passant pas par le constructeur, si quelqu'un a une idée?

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    As-tu regardé la documentation de vector (ici, par exemple)?

    Et pendant que j'y suis:
    Il est INTERDIT d'utiliser un using namespace (quelconque) dans un header.
    C'est un excellent moyen de tout casser.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    Concernant le using namespace si je l'enleve c'est sur que la ca marche plus, alors comment tu t'y prend dans ce cas.

    Et concernant mon probleme de tableau vector<int> defini comme attribut d'une classe je n'ai rien trouvé dans la doc mais je vais continuer a chercher

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 516
    Par défaut
    Les mutateurs, c'est caca.

    + 1 pour l'interdiction "des using namespace" dans les .h.
    Concernant le using namespace si je l'enleve c'est sur que la ca marche plus, alors comment tu t'y prend dans ce cas.
    T'as peur d'user ton clavier en ajoutant "std::" là où c'est nécessaire ?


    Un premier jet (manque la gestion des Big Five ) :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    class Video{
    public:
    	Video(std::string&& un_nom, size_t une_date,std::string&& nom_fichier, double une_duree):nom(un_nom),date(une_date),fichier(nom_fichier),duree(une_duree){};
    	virtual void afficher(std::ostream&) const{};
    private:
    	const std::string& nom;
    	size_t date;
    	const std::string& fichier;
    	double duree;
    };
     
    class Film : public Video
    {
    public:
        //Constructeur
        Film(std::string&& un_nom, size_t une_date,
             std::string&& nom_fichier, double une_duree, std::vector<std::string>& chapitre);
        //Accesseurs
        int nombreChapitres() const;
        virtual void afficher(std::ostream&) const;
        //Destructeur
        virtual ~Film(){}
     
    	std::vector<std::string>& chapitres_;
     
    };
     
    Film::Film(std::string&& un_nom, size_t une_date,
               std::string&& nom_fichier, double une_duree, std::vector<std::string>& un_chapitre)
        : Video(std::string(un_nom), une_date, std::string(nom_fichier), une_duree),
          chapitres_(un_chapitre)
    {
        std::cout << "Construction de la platforme de films " << std::endl;
    }
     
    int Film::nombreChapitres() const
    {
        return chapitres_.size();
    }
     
    void Film::afficher(std::ostream& sortie) const
    {
        Video::afficher(sortie);
        for(int i(0); i< chapitres_.size(); ++i)
        {
            sortie << "Chapitre " << i+1 << " :" << std::endl
                   << chapitres_[i] << std::endl;
        }
    }

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Quand tu ne trouve pas comment faire quelque chose, écrit des commentaires qui ferait ce qu'il faut.
    Quand les commentaires sont assez précis, la question à poser est courte, technique et précise, et la réponse est souvent dans la documentation de l'outil.

    En l'occurence, il y a les constructeurs, l'opérateur d'affectation, push_back, et size(). ca doit suffire pour débuter.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 16/11/2014, 21h58
  2. Objet vector<Type> membre d'une classe
    Par Chewbi dans le forum SL & STL
    Réponses: 3
    Dernier message: 16/02/2006, 17h12
  3. Pointeur sur des fonctions membres d'une classe
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 15/02/2006, 11h35
  4. [VB.NET]Reflexion lister les membres d'une classe ...presque
    Par lucie.houel dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/09/2005, 13h49
  5. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15

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