Message d'erreur

imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005 - 15 sept. 2005 à 12:39
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005 - 16 sept. 2005 à 16:02
Salut tous le monde,
j'ai le fonction suivante
[cpp]
vecteur* vecteur:: readvecteur(int *nbrev,char *fichier)
{
int i=0,cp=0,j=0;
float value,val1,val2;
ifstream Al;
std::vector<vecteur>vect(50);
Al.open("fichier.txt");
while (i <(100*d) ) // *2 ici car on va lire x et y
{
Al >> value;
val1=value;
Al >> value;
val2=value;
vect[cp].x=val1;
vect[cp].y=val2;
vect[cp].id=compt++;
cp++;
i=i+d;
}
(*nbrev)=cp;
Al.close();
return vect;


}/cpp
avec la class vecteur:
[cpp]
class vecteur
{
public :


float x,y;
int id;
float reald;

vecteur();
vecteur(const vecteur &p);
vecteur(float a,float b,float c, float d);
virtual ~vecteur();

};
/cpp
le message d'erreur:
error C2440: 'return' : cannot convert from 'class std::vector<class vecteur,class std::allocator<class vecteur> >' to 'class vecteur *'
comment je peux résoudre ce problème?
Merci pour toutes proposition

32 réponses

imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
15 sept. 2005 à 21:31
j'ai ulilisé ca:
while(getline(Al, line))
value = strtod(line,NULL);
mais il m'as généré une erreur: error C2065: 'getline' : undeclared identifier
et je suis presque sur que ce n'est pas un problème de biblio; j'utilise dans mon programme les biblio
#include<cstdio>
#include<cmath>
#include
#include<ctime>
#include<conio.h>
#include<cstring>
#include<stdlib.h>
#include <fstream>
#include<vector>
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 sept. 2005 à 21:35
Et en faisant Al.getline(line)...


Euh...t'as vraiment besoin de tout ça comme include???

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
15 sept. 2005 à 21:48
le getline normalement comprend 2 paramètres:
istream& getline (char* s, streamsize n );
donc la condition pour lire tt les donnees est: while(getline(Al, line))
c'est ce que je pense en faites
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 sept. 2005 à 21:57
hum... je dirais plutôt: stream.getline(line,nb_max)
du coup:
Al.getline(line,NB_MAX); // à toi de définir Nb_MAX suivant ton format de fichier
while (line[0]) // tant que getline retourne quelquechose
{
... // traitement des données
Al.getline(line,NB_MAX);
}

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
15 sept. 2005 à 22:10
cela parait logique mais rien que la ligne Al.getline(line,line); me génère l'erreur:
error C2664: 'class std::basic_istream<char,struct std::char_traits<char> > &__thiscall std::basic_istream<char,struct std::char_traits<char> >::getline(char *,int)' : cannot co
nvert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 sept. 2005 à 22:15
ça devrait marcher comme ça:
char line[10]; // et non pas "string line"
...
Al.getline(line,10);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
15 sept. 2005 à 22:35
voilà, maintenant pas d'erreurs, mais il lit uniquement la premiere ligne, sinon pourquoi le line[0] dans while (line[0]) ??
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 sept. 2005 à 22:40
Normal qu'il ne lise qu'une seule ligne si tu ne code pas la boucle qu'il y a 4 messages au-dessus . Le while(line[0]) c'est juste pour tester si getline retourne quelquechose. S'il ne retourne rien, on arrête de lire...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
15 sept. 2005 à 22:52
ca dois etre ca normalement
ifstream Al;
char line[10];
Al.open(fichier);
Al.getline(line,10);

while(line[0])
{
val1 = strtod(line,NULL);
val2 = strtod(line,NULL);
vect[cp].x=val1;
vect[cp].y=val2;
cp++;
Al.getline(line,10);


}
Al.close();
}
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
16 sept. 2005 à 01:36
j'ai trouvé une technique plus simple:
ifstream Al;
Al.open(fichier);
while (Al)
{
Al>>val1;
vect[cp].x=val1;
Al>>val2;
vect[cp].y=val2;
vect[cp].id=compt++;
cp++;

}
(*nbrev)=cp;
Al.close();
}
Merci beaucoups buno, maintenant je peu fermer le sujet
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
16 sept. 2005 à 09:07
Pas tout à fait :)
tu peux faire directement:
Al>>vect[cp].x;
Al>>vect[cp].y;

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
16 sept. 2005 à 16:02
Ouai Buno t'as raison c'est plus souple.
0
Rejoignez-nous