[string C++] ::>>> bien Relou

Résolu
Arno -  
mamiemando Messages postés 33784 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour j'ai pas mal de problemes en C++ pour faire un toString() pour une classe nommée vecteur.
en effet je connai mieu le java ou c'est vraiment plus simple de manipuler des chaines de caracteres. voici l'état de mon code:

void Vecteur::toString(){
  cout << getX() <<";" << getY() << endl;
}


donc pour le moment j'affiche seulement les coordonnées x et y avec un cout.
et ma fonction ne retourne rien.
j'aimerais pluto que ma fonction retourne un string mais je misere pour concatener et caster mes coordonnees (qui sont des floats) en string.

j'espere que vous mavez suivi

1 réponse

mamiemando Messages postés 33784 Date d'inscription   Statut Modérateur Dernière intervention   7 885
 
Dans cet exemple je définis d'un coup l'opérateur d'écriture pour les sorties standards std::cout et std::cerr (de type std::ostream) et pour les fichiers (de type std::ofstream) grâce à un template. Les fonctions template doivent impérativement être intégralement dans le .hpp
#include <iostream>

class vecteur{
  protected:
  double x;
  double y;
  public:
  vecteur(){}
  vecteur(const double & x0,const double & y0):x(x0),y(y0){}
  inline void setx(const double & x0){x = x0;}
  inline void sety(const double & y0){y = y0;}
  inline const double & getx() const {return x;}
  inline const double & gety() const {return y;}
};

template <typename Tstream>
Tstream & operator << (Tstream & out,const vecteur & v){
  out << v.getx() << ' ' << v.gety();
  return out;
}

int main(){
  vecteur v1(5.0,3.6);
  std::cout << v1 << std::endl;
  return 0;
}

Bonne chance
0