surcharge d'opérateur avec classes différentes
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:
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:
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:
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
Code:
#include "matrix.h"
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...