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

SL & STL C++ Discussion :

attribut référence sur un vector


Sujet :

SL & STL C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 2
    Par défaut attribut référence sur un vector
    Salut,
    j'ai un gros problème avec les "vector" que je n'arrive pas à resoudre:
    pour simplifier, il y a une classe "Processus" qui contient un attribut membre de type réference sur vector de double.
    la classe "ProcessusBSS" derive de "Processus".
    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
     
    using namespace std;
    class Processus
    {
    private:
       vector<double> m_Paramdef;
     
    protected:
        double m_h;
        vector<double> & m_Param;
     
    public:
        virtual double getIncrement(double Current_Pos,double Alea){return 0;};
        virtual vector<double> getSample(double Starting_Pos, vector<double> Alea, long NbrePas){ vector<double> res(0); return res;};
        Processus(double h, vector<double> & Param);
        virtual ~Processus();
        Processus(Processus & p);
        Processus();
        double get_h(){return m_h;};
        void set_h(double h){m_h=h;};
     
    };
    et dans le .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Processus::Processus(double h, vector<double> & Param) 
        : m_h(h)
        , m_Param(Param)
        {}
    Processus::Processus(Processus & p) :
             m_h(p.m_h)
           , m_Param(p.m_Param) {}
    et dans le .cpp d'une autre classe "Produit" je fais appel au constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Produit(...) : m_S0(S0){
        vector<double> parami(5);
            // je rempli le vecteur avec des valeurs comme suit:
        parami[0]=...;    
        parami[1]=...;     
        parami[2]=...;    
        parami[3]=...;       
        parami[4]=...;           
        m_PS=ProcessusBSS(0.004,paramii);// ERREUR
       ...

    Le compilateur me renvoi l'erreur suivante:

    error:non-static reference member `std::vector<double, std::allocator<double> >&Processus::m_Param' can't use default assignement operator

    j'ai tout essayé sans résultat.
    Je bloque dessus depuis deux jours .
    est ce que quelqu'un pourrait m'aider à comprendre d'où vient mon erreur?

  2. #2
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu ne peux pas réassigner ton objet m_PS, puisqu'il contient une référence, et qu'une référence n'est pas réassignable. Tu n'as pas d'autre choix que de contruire ton objet m_PS directement avec les bons paramètres, ou si ce n'est pas possible, de remplacer la référence par un pointeur. (ou d'allouer m_PS dynamiquement).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 2
    Par défaut
    en fait, l'objet m_PS est lui aussi un attribut de la classe "Produit" dont dérive "ProduitFils":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Produit
    {
    ...
    protected:
        Processus & m_PS;
        vector<double> Parametres;
    ...
    m_PS est donc construit pour la premiere fois a l'apel du constructeur de ProduitFils qui fait appel au constructeur par defaut du pere, et puis à celui de la classe "Processus".

Discussions similaires

  1. Références sur un vector
    Par Happy dans le forum C++/CLI
    Réponses: 4
    Dernier message: 23/04/2011, 06h49
  2. itérer sur une référence constante de vector
    Par manonoc dans le forum SL & STL
    Réponses: 1
    Dernier message: 17/08/2008, 12h50
  3. Retourner une référence sur un std::vector
    Par Rodrigue dans le forum C++
    Réponses: 12
    Dernier message: 13/10/2007, 16h30
  4. std::sort() sur std::vector()
    Par tut dans le forum SL & STL
    Réponses: 20
    Dernier message: 05/01/2005, 19h15
  5. [debutant STL] question sur les vectors
    Par killerjeff dans le forum SL & STL
    Réponses: 13
    Dernier message: 19/08/2004, 17h32

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