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

MFC Discussion :

[MFC] vector et fonction


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Par défaut [MFC] vector et fonction
    Bonjour,

    Dans une fonction, je crée un vector de dimension quatre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    typedef std::vector<CString> CStringVector;
    CStringVector Liste[4]
    Je rempli alors en lsant dans un fichier ce vector (la taille finale du vector étant variable suivant la longueur du fichier à traiter).
    Je souhaite alors renvoyer ce vector dans le programme principal. Je ne sais pas comment déclarer ma fonction pour que cela marche (quel doit être le prototype de ma fonction,...). Comment faire ?

    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ça peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef std::vector<CString> CStringVector;
    CStringVector Liste[4];
     
    CStringVector *MyFonction()
    {
    	return Liste;
    }
    CStringVector  *parListe=MyFonction();
    c'est ça que tu veux faire ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Par défaut
    Oui c'est ce que je cherche à faire mais je crois que cela ne marche pas car quand je fait l'opération suivante, ca plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CStringVector  *Liste=MyFonction(stream);
    CStringVector::iterator ListeIterator;
    float Total=0;
    for (ListeIterator=Liste[2].begin();ListeIterator!=Liste[2].end();ListeIterator++)
    {
    	Total=Total + atof((char*)(LPCTSTR) *ListeIterator);
    }
    On regardant de plus près avec le débugger, l'addresse du premier élément de la liste est 0x00000000 et pareil pour le dernier.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    montre comment tu as implementé MyFonction .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Par défaut
    ok, alors voila le fichier .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include <vector>
     
    typedef std::vector<CString> CStringVector;
     
    CStringVector *MyFonction(FILE *);
    Voila la déclaration de la fonction MyFonction:
    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
     
    CStringVector *MyFonction(FILE *stream) 
    { 
    	int Charlu, Char, Test;
    	Test = 0;
    	Char = int ('#');
    	CString Date,Name,Type,Price;
    	CStringVector Liste[4]; 
     
    	//Lecture du fichier
    	Charlu=fgetc(stream);
    	while (!feof(stream))
    	{
     
    			//On lit et on écrit la date
    			while (Charlu!=Char)
    			{
    				Date = Date + char (Charlu);
    				Charlu=fgetc(stream);
    			}
    			Liste[0].push_back(Date);
     
    			//On lit et on écrit l'intitulé
    			Charlu=fgetc(stream);
    			while (Charlu!=Char)
    			{
    				Name = Name + char (Charlu);
    				Charlu=fgetc(stream);
    			}
    			Liste[1].push_back(Name);
     
    			//On lit le montant, on l'écrit et on fait la somme
    			Charlu=fgetc(stream);
    			while (Charlu!=Char)
    			{
    				Price = Price + char (Charlu);
    				Charlu=fgetc(stream);
    			}
    			Liste[2].push_back(Price);
    			if (!feof(stream))
    			{
    				Charlu=fgetc(stream);
    				Charlu=fgetc(stream);
    			}
    			Date="";
    			Name="";
    			Price="";
    	} 
     
        return Liste; 
    }

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    c'est bien ce qui me semblait tu ne peux retourner un pointeur sur un objet declarer localement dans une fonction ...(sauf si il est declaré static )
    sa portée c'est la fonction ,la variable est dans la pile quand tu sors de la fonction l'emplacement est liberé ...
    si ta fonction ne fait pas partie d'une classe ta variable liste doit etre une variable globale ...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Par défaut
    Ok merci ca march.

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

Discussions similaires

  1. [XL-2003] MFC avec la fonction RANG
    Par yfchauer dans le forum Excel
    Réponses: 4
    Dernier message: 26/12/2013, 13h45
  2. <vector> et fonction
    Par a_lincoln54 dans le forum C++
    Réponses: 4
    Dernier message: 03/06/2008, 17h11
  3. MFC - Appel de fonction en mode Unicode ?
    Par Erakis dans le forum MFC
    Réponses: 8
    Dernier message: 14/11/2007, 13h07
  4. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  5. [MFC] Probleme de fonction
    Par AurelBUD dans le forum MFC
    Réponses: 2
    Dernier message: 08/08/2005, 10h05

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