Plein de remarques:
- Évite les using namespace std, voir:
[ Lien ]
- Évite les char*, préfère les std::string.
- En C++, inutile de mettre void dans une fonction ne prenant pas d'argument, on préfère laisser les parenthèses vides.
- Lorsque l'on concatène un nombre indéfini d'éléments, on évite d'utiliser un std::string. On préfère utiliser une classe dédiée aux concaténations rapides: std::iostringstream.
- Pour parcourir une collection, on utilise une méthode unifié appelée "iterateur".
- Une fonction d'affichage prend généralement en argument le flux ou afficher (sortie standard, sortie d'erreur, un fichier, etc...).
Là c'est du détail:
- Une classe commence généralement par une majuscule.
- On différencie les attributs d'une classe, par exemple en les préfixant d'un "_".
- Met plus de warning sur ta ligne de compil, au moins: g++ -W -Wall -Wabi -pedantic
Code C/C++ :
#include <sstream>
#include <iostream>
#include <vector>
class RedigeForMe
{
public:
void addLigne(const std::string& str);
void cc(std::ostream& out);
private:
typedef std::vector<std::string>::const_iterator iter;
std::vector<std::string> _mesChaines;
int nbIns; // nombre d'instruction archivé
};
void RedigeForMe::addLigne(const std::string& str)
{
_mesChaines.push_back(str);
}
void RedigeForMe::cc(std::ostream& out)
{
std::ostringstream buff;
for (iter it = _mesChaines.begin(); it != _mesChaines.end() ; ++it)
buff << *it << std::endl;
out << buff.str() << std::endl;
}
int main()
{
RedigeForMe redige;
redige.addLigne("Linge 1");
redige.addLigne("Linge 2");
redige.cc(std::cout); // Sortie standard
redige.cc(std::cerr); // Sortie d'erreur
// redige.cc(file); // On pourrait aussi mettre un fichier
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question