Bonsoir,
Je suis en train de programmer une classe vecteur qui est censé représenter des vecteurs de dimensions quelconque.
Et j'aimerais bien surcharger pas mal d'opérateurs sur cette classe mais là j'ai un peu de mal.
Je vous met la classe dans l'état actuel:
Vecteur.h
Vecteur.cpp
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 #ifndef VECTEUR #define VECTEUR #include <vector> /*! * \class Vecteur * \brief La classe Vecteur représente un vecteur dans un espace de dimension quelconque. */ class Vecteur{ public : /*! * \brief Constructeur de la classe Vecteur. * * Construit un vecteur de dimension nombreComposantes qui valent toutes composante. * * \param nombreComposantes : dimension du vecteur = nombre de composantes du vecteur. Doit être sctricement positif. * \param composante : valeur des composantes du vecteur. */ Vecteur(unsigned int nombreComposantes, long double composante=0 ); /*! * \return la dimension du vecteur. */ unsigned int size() const; /*! * \brief Surcharge de l'opérateur [] * * \param numeroComposante : numéro de la composante du vecteur à affecter. Va de 0 jusqu'à dimension du vecteur -1. * \return Une référence sur la composante du vecteur */ long double operator[](const unsigned int numeroComposante) const; long double& operator[](const unsigned int numeroComposante); private: std::vector<long double> m_vecteur; //!<Tableau dynamique contenant l'ensemble des composantes du vecteur. }; #endif
Donc si j'ai bien compris pour surcharger "<<" il ne faut pas la mettre dans le classe. C'est bien ce que j'ai fait.
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 #include "Vecteur.h" #include <cmath> #include <iostream> Vecteur::Vecteur(unsigned int nombreComposantes, long double composante) { if(nombreComposantes >0) m_vecteur.assign(nombreComposantes, composante); } unsigned int Vecteur::size() const { return m_vecteur.size(); } long double Vecteur::operator[] (const unsigned int numeroComposante) const { return m_vecteur[numeroComposante]; } long double& Vecteur::operator[] (const unsigned int numeroComposante) { return m_vecteur[numeroComposante]; } ostream &operator<<( ostream &out, const Vecteur &vecteur ) { for(unsigned int i=0; i<vecteur.size();i++) out << vecteur[i] << " " ; return out; }
Mais à la ligne de la définition de la méthode j'ai l'erreur: " expected constructor, destructor, or type conversion before '&' token "
Qu'est-ce qui ne vas pas ?
Merci.
Partager