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 :

Probleme avec la classe vector


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut Probleme avec la classe vector
    Bonjour,

    J'ai une classe TActiveContainer:

    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
    template <class T>
    class TActiveContainer : public IActiveContainer
    {
    private:
        /////////////////////////////////////////////////////
        // private associations
        /////////////////////////////////////////////////////
        vector<IActiveObject*> elements;
        IActiveContainer* src;
     
    public:
        /////////////////////////////////////////////////////
        // public operations
        /////////////////////////////////////////////////////
        inline TActiveContainer();
    	/*inline TActiveContainer(const TActiveContainer &activeContainer);
        inline TActiveContainer& operator= (const TActiveContainer& activeContainer);*/
        inline void init(IActiveContainer* src);
        inline int size();
    .....
    };
     
    template <class T>
    TActiveContainer<T>::TActiveContainer()
    {
    	this->elements.clear();
    	assert(this->elements.size() == 0);
    	this->src = NULL;	
    }
     
    template <class T>
    void TActiveContainer<T>::init(IActiveContainer* src)
    {	
    	this->src = src;
    	this->elements.clear();
    	assert( this->elements.size() == 0 );
    }
     
    template <class T>
    int TActiveContainer<T>::size()
    {
        this->elements.size();
    }
    Quand je veux l'utiliser, je fais ceci:
    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
    	texte = "TActiveContainer: ";
    	Form1->Memo1->Lines->Add(texte);
    	TActiveContainer<TRegion*> list; 
     
    	texte = "list.size: "; 
    	texte += list.size();
    	Form1->Memo1->Lines->Add(texte); 
     
    	texte = "list.init: ";
    	Form1->Memo1->Lines->Add(texte);
    	list.init(NULL);
     
    	texte = "list.size: "; 
    	texte += list.size();
    	Form1->Memo1->Lines->Add(texte);
    Normalement, cela devrait marcher... mais non!
    Voici ce qu'il m'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TActiveContainer: 
    list.size: 1242552
    list.init: 
    list.size: 1242552
    Comment se fait-il que mon vecteur ne soit pas vide?

    Ce qui est bizarre, c'est que cela se passe comme ceci sur un serveur COM que j'ai réalisé moi-même.

    Si je fais la même chose sur le programme client, cela marche très bien.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    Qu'es ce que texte????

  3. #3
    Membre éclairé Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut
    Une AnsiString.
    Je tourne sous C++builder.

    Je ne pense pas que se soit ça qui plante.
    Je l'utilise toujours et ça marche à chaque fois.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sylvain.cool Voir le message
    Une AnsiString.
    Je tourne sous C++builder.

    Je ne pense pas que se soit ça qui plante.
    Je l'utilise toujours et ça marche à chaque fois.
    Vue tes assert, ton code fonctionne et c'est ce que tu affiche qui est erroné

  5. #5
    Membre Expert

    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
    Par défaut
    Salut,

    Je ne connais pas AnsiString mais ça là :
    A mon avis ça ne transforme pas du tout magiquement un nombre en chaîne de caractères...

    MAT.

  6. #6
    Membre éclairé Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut
    Si je fais ceci :
    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
    	AnsiString texte;
    	int nbTmp;
     
    	texte = "TActiveContainer: ";
    	Form1->Memo1->Lines->Add(texte);
    	TActiveContainer<TRegion*> list; 
     
    	nbTmp = 123;
    	texte = "nbTmp: "; 
    	texte += nbTmp;  
    	Form1->Memo1->Lines->Add(texte); 
     
    	nbTmp = list.size();
    	texte = "list.size: "; 
    	texte += nbTmp;
    	Form1->Memo1->Lines->Add(texte); 
     
    	texte = "list.init: ";
    	Form1->Memo1->Lines->Add(texte);
    	list.init(NULL);
     
    	nbTmp = list.size();
    	texte = "list.size: "; 
    	texte += nbTmp;
    	Form1->Memo1->Lines->Add(texte);
    J'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TActiveContainer: 
    nbTmp: 123
    list.size: 1242584
    list.init: 
    list.size: 1242584
    Donc, ça a l'air de marcher.
    Mais effectivement, les assert montrent bien que la taille est à 0.

  7. #7
    Membre éclairé Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut
    Si je fais la même chose du côté de mon client, ça marche nickel (je rappelle que je fais ça dans un serveur DCOM).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TActiveContainer: 
    nbTmp: 123
    list.size: 0
    list.init: 
    list.size: 0

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

Discussions similaires

  1. probleme avec la classe vector de java.util
    Par gtkmm dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 02/02/2010, 13h05
  2. probleme avec la classe vector
    Par elekis dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2006, 16h25
  3. Probleme avec la STL(vector) avec code C
    Par Benjy dans le forum SL & STL
    Réponses: 12
    Dernier message: 06/04/2006, 12h54
  4. Probleme avec une class template
    Par lenectar dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2006, 10h49
  5. probleme avec la classe calendar
    Par fatmax dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2005, 17h04

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