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 :

Vector


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut Vector
    Salut a tous,
    je voudrais utiliser la template vector dans une classe pour recuperer des données et pouvoir par la suite les afficher. j'ai ecris les bouts de code suivants qui ne fonctionnent pas.
    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
     
     
    //  Corps de la class
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <numeric>
    #include "Klass.h"
     
    using namespace std;
     
    char* Cnode::GetName(){
            return m_StrName;
    }
     
    int Cnode::GetEdgedID(){
     
            for ( size_t i = 0, size = m_cEdgedIDs.size(); i < size; ++i ){
                    cout << m_cEdgedIDs[ i ] << "  " ;
            }
            cout << endl;
    }
     
    void Cnode::SetName(char* Name){
            m_StrName = Name;
    }
     
    void SetEdgedID(int Edge){
            m_cEdgedIDs.push_back(Edge);
    }
    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
     
    // fichier header Klass.h
    #ifndef Klass_H
    #define Klass_H
    class Cnode {
            private:
                    char* m_StrName;
                    std::vector<int>  m_cEdgedIDs;  // m_cEdgedIDs
            public:
                    char* GetName();                
                    int GetEdgedID();
                    void SetName(char*);               
                    void SetEdgedID(int);              
    };
    #endif
    Merci de m'appoter une solution a cela

  2. #2
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Citation Envoyé par tcharles
    j'ai ecris les bouts de code suivants qui ne fonctionnent pas.
    Qu'est-ce que tu entends par ne fonctionnent pas? Pourrais-tu nous donner les messages d'erreur car sans on peut pas dire grand chose.

    Sinon déjà à la volé tu as oublié d'inclure <vector> dans le header (pour la déclaration de std::vector<int> m_cEdgedIDs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut
    il te manque juste le dans Klass.h

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut
    voici en fait les erreurs que j'obtient meme apres voir insere #include<vector>dans Klass.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
     
    "Klasse.C", line 6: Error: Could not open include file "Klass.h".
    "Klasse.C", line 10: Error: Cnode is not defined.
    "Klasse.C", line 11: Error: m_StrName is not defined.
    "Klasse.C", line 14: Error: Cnode is not defined.
    "Klasse.C", line 16: Error: m_cEdgedIDs is not defined.
    "Klasse.C", line 16: Error: Badly formed expression.
    "Klasse.C", line 17: Error: m_cEdgedIDs is not defined.
    "Klasse.C", line 20: Error: "GetEdgedID()" is expected to return a value.
    "Klasse.C", line 22: Error: Cnode is not defined.
    "Klasse.C", line 23: Error: m_StrName is not defined.
    "Klasse.C", line 27: Error: m_cEdgedIDs is not defined.
    "Klasse.C", line 27: Error: Badly formed expression.
    12 Error(s) detected.

  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
    Alors commence par résoudre ta première ligne, il dit clairement, explicitement, qu'il n'arrive pas à ouvrir le fichier Klass.h.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut
    apres les modifications suivantes:
    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
     
    //  Corps de la class
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <numeric>
    #include "Klasse.h"
     
    using namespace std;
     
    char* Cnode::GetName(){
            return m_StrName;
    }
     
    int Cnode::GetEdgedID(){
     
            for ( size_t i = 0, size = m_cEdgedIDs.size(); i < size; ++i ){
                    cout << m_cEdgedIDs[ i ] << "  " ;
    		return m_cEdgedIDs[ i ];
            }
            cout << endl;
    }
     
    void Cnode::SetName(char* Name){
            m_StrName = Name;
    }
     
    void SetEdgedID(int Edge){
            m_cEdgedIDs.push_back(Edge);
    }
    et #include "Klasse.h" j'ai les erreurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "Klasse.C", line 28: Error: m_cEdgedIDs is not defined.
    "Klasse.C", line 28: Error: Badly formed expression.
    2 Error(s) detected.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut
    je me pose aussi la question s'il ne serait pas plus aise d'utiliser le vector comme variable public sans y ajouter des methodes a son utilisation.
    ???

  8. #8
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Simple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Cnode::SetEdgedID(int Edge){ 
            m_cEdgedIDs.push_back(Edge); 
    }
    Tel que tu as déclaré SetEdgedID, ce n'est pas une fonction de classe.

  9. #9
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Citation Envoyé par tcharles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int Cnode::GetEdgedID(){
     
            for ( size_t i = 0, size = m_cEdgedIDs.size(); i < size; ++i ){
                  cout << m_cEdgedIDs[ i ] << "  " ;
                  return m_cEdgedIDs[ i ];
            }
            cout << endl;
    }
    y'aurait pas un autre pb là ? c'est louche le return dans la boucle for, tu retourne la 1ere valeur du vector et c'est tout, je ne pense pas que c'est ce que tu voulais faire.

  10. #10
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Au posteur initial :
    Et donc la fin de l'histoire? Juste pour savoir

  11. #11
    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
    Citation Envoyé par jmv
    Citation Envoyé par tcharles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int Cnode::GetEdgedID(){
     
            for ( size_t i = 0, size = m_cEdgedIDs.size(); i < size; ++i ){
                  cout << m_cEdgedIDs[ i ] << "  " ;
                  return m_cEdgedIDs[ i ];
            }
            cout << endl;
    }
    y'aurait pas un autre pb là ? c'est louche le return dans la boucle for, tu retourne la 1ere valeur du vector et c'est tout, je ne pense pas que c'est ce que tu voulais faire.
    Exact, et il a dû sortir un truc te disat que la fonction doit retourner qqch mais qu'en fait elle ne retournait rien, non ?

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 60
    Par défaut
    La fin de l'histoire est la suivante: au lieux de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void SetEdgedID(int Edge){
            m_cEdgedIDs.push_back(Edge);
    }
    plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Cnode::SetEdgedID(int Edge){
            m_cEdgedIDs.push_back(Edge);
    }
    et pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int Cnode::GetEdgedID(){
     
            for ( size_t i = 0, size = m_cEdgedIDs.size(); i < size; ++i ){
                  cout << m_cEdgedIDs[ i ] << "  " ;
                  return m_cEdgedIDs[ i ];
            }
            cout << endl;
    }
    simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int Cnode::GetEdgedID(){
     
            return m_cEdgedIDs.back();
     
    }

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

Discussions similaires

  1. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42
  2. vector et erase()
    Par gytr2 dans le forum SL & STL
    Réponses: 6
    Dernier message: 02/03/2004, 12h45
  3. equivalent Vector du jsp
    Par Djib dans le forum ASP
    Réponses: 4
    Dernier message: 05/12/2003, 08h07
  4. "vector" provoque "syntax error", malgré
    Par seenkay dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/08/2003, 03h21
  5. Réponses: 2
    Dernier message: 11/07/2003, 18h24

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