begin process at 2012 05 29 13:12:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

message d'erreur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

message d'erreur

jeudi 15 septembre 2005 à 12:39:28 | message d'erreur

imanedaoudi

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

jeudi 15 septembre 2005 à 14:13:40 | Re : message d'erreur

buno

Administrateur CodeS-SourceS
La fonction veut une valeur de retour de type vecteur et toi, tu lui retourne un std::vector.
Un peu de cohérence...


Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 15 septembre 2005 à 14:40:23 | Re : message d'erreur

DeAtHCrAsH

Tu dois declarer vect en tant que pointeur de vecteur. Sinon a part ca je te déconseille vivement de continuer dans cette vois. Une fonctiion qui renvoie un pointeur, doit renvoyer un pointeur sur une variable globale (dans ton cas elle doit etre globale a ta classe). Toi tu renvoies le pointeur d'une variable locale a ta fonction, tout en sachant qu'a la fin de ta fonction ton pointeur sera detruit. Tu n'es donc plus dans la certitude de renvoyer un pointeur valide. NE JAMAIS CREER DES FONCTIONS QUI RENVOI DES POINTEURS PROPRE A LA FONCTION!!!
jeudi 15 septembre 2005 à 17:41:11 | Re : message d'erreur

imanedaoudi

ci j'ai bien compris ta remarque je faire comme ca:
vecteur* vecteur:: readvecteur(int *nbrev,char *fichier)
{
 int i=0,cp=0,j=0;
    float value,val1,val2;
 ifstream Al;
 vecteur *vect;
vect=new vecteur[500];
 Al.open("fichier.txt");
 while (i <(100*d) )  // 
 {
   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;
data=vect;
Al.close();
return vect;

}
avec la class vecteur:

class vecteur 
{
  public :

  float x,y;
  int id;
  float reald;
  vecteur *data;
 
vecteur();
vecteur(const vecteur &p);
vecteur(float a,float b,float c, float d);
 virtual ~vecteur();
 
};

jeudi 15 septembre 2005 à 18:06:51 | Re : message d'erreur

buno

Administrateur CodeS-SourceS

Euh... je réponds avant DeathCrash:

fais plutôt: void vecteur:: readvecteur(vecteur *vect,int *nbrev,char *fichier)


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

jeudi 15 septembre 2005 à 18:08:38 | Re : message d'erreur

buno

Administrateur CodeS-SourceS
Du coup, tu peux enlever:
- vecteur *vect;
- return vect;

Ah oui! Il vaut mieux faire le new en dehors de la fonction...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 15 septembre 2005 à 18:11:57 | Re : message d'erreur

imanedaoudi

merci Buno, .. juste pour rendre les choses un peu clair, l'allocation de la mémoire
vect=new vecteur[500]; dois se faire à l'extérieur de la fonction non??
jeudi 15 septembre 2005 à 18:26:10 | Re : message d'erreur

imanedaoudi

Et si je met ca est ce que ca pose un problème!!!
En gardant bien sur la meme classe vecteur
vecteur::vecteur(vecteur a,vecteur b,char *fichier)
{   
 int nb;
 data=new vecteur[500];
 readvecteur(data,&nb,fichier);
 id=nb;
}
et en tenant compte bien sur de ta proposition Buno:
void vecteur:: readvecteur(vecteur *vect,int *nbrev,char *fichier)
 
jeudi 15 septembre 2005 à 19:13:22 | Re : message d'erreur

buno

Administrateur CodeS-SourceS

Euh... je viens de réfléchir: si ta fonction readvecteur fais partie de ta classe vecteur, tu n'es pas obligé de retourner un vecteur!!! :)
Donc, je te propose ceci (attention, je n'ai pas testé!!!!!!):

int main(int argc, char ** argv)
{
  vecteur vect;
  int nb=500;

  vect.readvecteur(&nb,"fichier.txt");
  ...
  return 0;
}

void vecteur::readvecteur(int * nb, char * fichier)
{
 int i=0,cp=0,j=0;
 float value,val1,val2;
 ifstream Al;
 Al.open("fichier.txt");
 while (i <(100*d) )  // 
 {
   Al >> val1;
  Al >> val2;
  data[cp].x=val1;
  data[cp].y=val2;
  data[cp].id=compt++;
  cp++;
  i=i+d;
 }
(*nbrev)=cp;
Al.close();
}

typedef struct
{
  float x;
  float y;
  int id;
} truc;


class vecteur 
{
  public :

  float reald;
  truc *data;
 
vecteur();
vecteur(const vecteur &p);
vecteur(float a,float b,float c, float d);
 virtual ~vecteur();
 
};



Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 15 septembre 2005 à 20:25:09 | Re : message d'erreur

imanedaoudi

je comprend, mais je ne vois pas ou tu alloue de la memoire pour *data??
je pense que pour realiser ca:
data[cp].x=val1;
  data[cp].y=val2;
  data[cp].id=compt++;
  cp++;

il faut reserver de l'espace mémoire ou est ce que je peux mettre ca pour ne pas avoir de problème??

1 2 3 4

Cette discussion est classée dans : value, vecteur, float, al, cp


Répondre à ce message

Sujets en rapport avec ce message

débordement de la mémoire [ par imanedaoudi ] Hi,je ne sais plus pourquoi le programme ci contre ne marche plus pour dim trés grande 60 par exemple#includeusing namespace std;void main(int argc, c urgent c++! [ par imanedaoudi ] j'arrive pas à voir l'erreur, normalement le programme marche avec la classe vecteur seulement lorsque j'ajoute la classe  base il y a des erreur sach Calcul matriciel [ par ganfoud ] SalutJ'ai créé une classe Vecteur et Matrice, tout marche sauf la surcharge de l'operateur =Voici les bouts qui nous interessent:matrice.hclass Vecteu fseek en c++ [ par imanedaoudi ] Bonjour, je cherche l'equivalent de fseek en c++, j'ai utilise la fonction suivante: vecteur* RegionApprox:: readvecteur(char *fichier,int *taille) { fichier [ par imanedaoudi ] Bonjour, comment detecter la fin du fichier en c++, je cherche à executer l' instruction (*taille=cp)une fois je detecte la fin du fichier vecteur* R tableau [ par infodaoudi ] bonjour, je veux récupérer le tableau *data à l'exterieure de la fonction readvecteur, comment faire sans utiliser return. Quelqu'un à une idée? merci utilisation de "this.*" et class sous c++ [ par gluff ] bonjour,Je n'arrive pas a compiler ce programme a cause de l'utilisation des "this." en particulier a la ligne : erreur de compilation :  vecteur si n float from sting [ par noumian ] bonjout a tousj'ai un petit prebleme avec une fonction de mon programmejvoudrais extraire un chiffre (float) inserer entre deux string "hello" et "wor construire une trame de données en c++ [ par salsou34 ] Bonjour, J'essai depuis plusieurs jours de créer une trame de données afin de l'envoyer sur un port serie. Ma trame serait constitué de 45 octets; Déb Probleme avec round [ par darkwhite ] Salut a tous je suis en train de faire un code ultra simple qui arrondi un nombre : #include #include int main(){  double value;  scanf("%f",&value); 


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales