Bonjour à tous !
Voilà j'ai besoin pour mon stage de M2 d'implémenter une surcharge d'opérateur, qui combine des classes différentes. Je m'exlique : j'ai créé une classe Matrix22 qui sert pour des matrices 2*2, et une classe Vect qui contient des vector (besoin de dynamique).
Jusque là, pas de souci pour surcharger des opérateurs, je peux additionner les matrices entre elles, les vecteurs entre eux etc...
Mais ce que je voudrais c'est surcharger l'opérateur *= puis l'opérateur *, afin de pouvoir définir l'opération "matrice agissant sur un vecteur". Je vous montre le code :
Dans le vect.h :
puis une partie du Vect.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
48
49
50
51
52
53 #ifndef VECT #define VECT #include <vector> #include <iostream> #include "Matrix.h" class Vect { /** \class Vect * \brief tool for intelligent arrays */ public: Vect(); /** \fn Vect() * \brief default constructor */ Vect(int size); /** \fn Vect(int size) * \brief surcharged constructor, specifying the size */ void defineelement(int i,double a); /** \fn defineelement(i,a) * \brief put the value a in case i of m_array */ void printarray() const; /** \fn printarray() * \brief print all elements of m_array */ Vect& operator*=(const Matrix22 &matrix);//CE QUE JE VOUDRAIS DEFINIR Vect& operator+=(const Vect &vect2); Vect& operator-=(const Vect &vect2); Vect& operator*=(const Vect &vect2); protected: std::vector<double> m_array;/**< array, core of the tool*/ int m_size;/**< size of the array*/ }; Vect operator+(Vect const& a, Vect const& b); Vect operator-(Vect const& a, Vect const& b); Vect operator*(Vect const& a, Vect const& b); #endif
Or le compilo m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Vect& operator*=(const Matrix22 &matrix)//CE QUE JE VOUDRAIS DEFINIR { double x[2]; for(int j=0;j<2;j++) { x[i]=matrix.m_array[i][j]*m_array[j]; } for(int i=0;i<2;i++) { m_array[i]=x[i]; } return *this; }
dans le Vect.h, à la ligne que j'ai commentée. Pourtant il y a bien un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 error : 'Matrix22' does not name a typeau début de ce Vect.h, donc pourquoi cette erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "matrix.h"
Ce serait très gentil de votre part de bien vouloir m'aider, parce que là je vois pas trop...
Partager