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 :
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
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
 
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;
}
Or le compilo m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
error : 'Matrix22' does not name a type
dans le Vect.h, à la ligne que j'ai commentée. Pourtant il y a bien un au début de ce Vect.h, donc pourquoi cette erreur ?

Ce serait très gentil de votre part de bien vouloir m'aider, parce que là je vois pas trop...