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 :

[Débutant]vector d'objet


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Par défaut [Débutant]vector d'objet
    Bonjour tout le monde,

    Je travaille sous Solaris (SUN) car j'ai pas le choix

    J'ai crée une classe "Noeud" et une classe "Lien".

    (un Lien est composé de 2 Noeud)

    Dans mon main je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector <Noeud> Vect_N;
    
    Pour les Noeuds, il n'y a pas de problème, je peux en ajouter dans le vector, pas de souci.

    Dès que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector <Noeud> Vect_N;
    std::vector <Lien> Vect_L;
    A la compilation j'ai l'erreur:
    Error: Template parameter std::T requires a type argument.
    Error: The type "std::vector<Lien, std::allocator<std::T>>" is incomplete.
    Quelqu'un sais pouquoi cela ne marche pas pour un vector de "Lien" ?

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Par défaut
    Est-ce que ta classe Lien contient ce qu'il faut, notamment un constructeur par copie visible (public) ?

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Est-ce qu'il connaît bien la classe Lien ?

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Par défaut
    Apparement, il ne connai pas la classe Lien. Je sais pas trop pourquoi.

    Je vais chercher...

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Parce que tu n'as peut-être pas inclu le header, tout simplement ?

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Par défaut
    Non, je pense avoir tout bien fait, c'est peut être mon Makefile?

    Vraiment là je sais pas où est mon problème. Je met mon code pour que vous comprenniez.

    Voici ma classe Noeud:
    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
    #ifndef Noeud_H
    #define Noeud_H
     
    class Noeud
    {
    public :
    //Constructeurs
    Noeud();
    Noeud(const Noeud& NC);
    Noeud(int k, int t, bool e, IloEnv env);
     
    //Accesseurs
    int get_Num(); 
    int get_Type();
    bool get_Etat();
    IloBoolVar get_Var();
     
    //Modificateur
    //void set_Num(int a) {Num = a;}
    void set_Etat(bool a); 
     
    void afficher();
     
    protected :
     
    //Attributs d'un Noeud
    int Num;     //Numéro du Noeud
    static const float Mat_EXC;
    static const float Mat_OXC;
    static const float Site_Noeud;  
    static const float Cout;   //Cout du Noeud
    int Type;
    bool Etat;
    IloBoolVar VarN;
    };
    #endif
    et
    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
    #include <ilcplex/ilocplex.h>
    #include <Noeud.h>
    #include <stdio.h>
    #include <iostream.h>
     
    //Description des différents couts
    const float Noeud::Mat_EXC = 20.44;
    const float Noeud::Mat_OXC = 10.78;
    const float Noeud::Site_Noeud = 7.67;  
    const float Noeud::Cout = Mat_EXC + Mat_OXC + Site_Noeud;
    //Constructeur
    Noeud::Noeud(){}
    Noeud::Noeud(const Noeud& NC)
    {
    if (NC.Num > 0)
    {
    Num = NC.Num;
    Type = NC.Type;
    Etat = NC.Etat;
    VarN = NC.VarN;
    }
    }
    Noeud::Noeud(int k, int t, bool e, IloEnv env)
    {
    Num = k;
    Type = t;
    Etat = e;
    VarN = IloBoolVar(env, "N");
    }
    //Accesseurs
    int Noeud::get_Num() {return Num;}
    int Noeud::get_Type() {return Type;}
    bool Noeud::get_Etat() {return Etat;}
    IloBoolVar Noeud::get_Var() {return VarN;}
     
    //Modificateur
    //void Noeud::set_Num(int a) {Num = a;}
    void Noeud::set_Etat(bool a) {Etat = a;}
     
    void Noeud::afficher()
    {
    cout << "N[" << Num << "] = " << Etat << endl;
    }
    et ma classe Lien:
    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
    #ifndef Lien_H
    #define Lien_H
    #include <Noeud.h>
     
    class Lien
    {
    public :
    //Constructeur
    Lien(const Lien& LC);
    Lien(int k, int l, Noeud x, Noeud y);
    //Accesseurs
    int get_Num();
    int get_Longueur();
    Noeud get_NoeudM();
    Noeud get_NoeudN();
    bool get_Etat();
    IloBoolVar get_Var();
     
    //Modificateur
    void set_Num(int a);
    void set_Etat(bool a);
     
    void afficher();
    protected :
    //Attributs d'un Lien
    int Num;   //Numéro du Lien
    int Longueur;  //Longueur du Lien
    Noeud M;    //Noeud de départ
    Noeud N;    //Noeud d'arrivé*
    static const float MUX;
    static const float Booster;
    static const float Site_Ampli;
    static const float Module_DCF;
    static const float CoutF; //Cout Fixe du Lien
    static const float D;
    float CoutV;   //Cout Variable du Lien
    bool Etat;
    IloBoolVar VarL;
    };
    #endif
    et
    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
    50
    51
    #include <ilcplex/ilocplex.h>
    #include <iostream.h>
    #include <Noeud.h>
    #include <Lien.h>
     
    //Description des différents couts
    const float Lien::MUX = 1.33;
    const float Lien::Booster = 1.67;
    const float Lien::Site_Ampli = 4.78;
    const float Lien::Module_DCF = 1.44 * (80/100);
    const float Lien::CoutF = MUX + Booster;
    const float Lien::D = Site_Ampli + Module_DCF;
     
    //Constructeur
    Lien::Lien(const Lien& LC)
    {
    if (LC.Num > 0)
    {
    Num = LC.Num;
    Longueur = LC.Longueur;
    M = LC.M;
    N = LC.N;
    CoutV = LC.CoutV;
    Etat = LC.Etat;
    VarL = LC.VarL;
    }
    }
    Lien::Lien(int k, int l, Noeud x, Noeud y)
    {
    Num = k; 
    Longueur = l;
    M = x;
    N = y;
    CoutV = D * Longueur;
    }
    //Accesseurs
    int Lien::get_Num() {return Num;}
    int Lien::get_Longueur() {return Longueur;}
    Noeud Lien::get_NoeudM() {return M;}
    Noeud Lien::get_NoeudN() {return N;}
    bool Lien::get_Etat() {return Etat;}
    IloBoolVar Lien::get_Var() {return VarL;}
     
    //Modificateur
    void Lien::set_Num(int a) {Num = a;}
    void Lien::set_Etat(bool a) {Etat = a;}
    void Lien::afficher()
    {
    cout << "L[" << M.get_Num() << "][" << N.get_Num() << "] = " << Etat << endl;
    }
    dans mon main, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <Lien.h>
    #include <Noeud.h>
     
    int main(int argc, char **argv)
    {
    ...
    Lien LO(0, 200, Vect_N[1], Vect_N[2]);
    ...
    }
    j'obtiens les erreurs:
    Error: Lien is not defined.
    Error: Cannot use Noeud to initialize int.
    D'après la 1ère erreur, il ne connais pas le constructeur Lien.
    La 2 ème erreur ? Je comprends pas.

    Je sais qu'il y a beaucoup à lire, mais je mets tout pour que vous puissiez m'aider.

    Merci.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 01/09/2005, 15h09
  2. [Débutant(e)][optimisation]Objet Session
    Par plddcn dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 24/01/2005, 21h34
  3. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  4. [Débutant]Detruire un objet
    Par wkd dans le forum Débuter
    Réponses: 5
    Dernier message: 22/05/2004, 21h58
  5. [ JSP ][ Débutant ] Passage d'objet par un forward
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/04/2004, 10h33

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