Operator + (addition daux 2 matrices cares )
Fermé
Lampard88
Messages postés
86
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2009
-
26 janv. 2009 à 01:02
Lampard88 Messages postés 86 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 25 octobre 2009 - 26 janv. 2009 à 21:50
Lampard88 Messages postés 86 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 25 octobre 2009 - 26 janv. 2009 à 21:50
A voir également:
- Operator + (addition daux 2 matrices cares )
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
- 2 comptes whatsapp - Guide
- Addition excel - Guide
- Epson scan 2 ✓ - Forum Imprimante
- 2 ecran pc - Guide
6 réponses
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
26 janv. 2009 à 10:13
26 janv. 2009 à 10:13
Salut.
premièrement, ça serait sympa de mettre l'erreur produite, on gagnerai du temps.
à ta place, j'utiliserai plutôt la fonction :
const Matrix& operator+(const Matrix& a,const Matrix& b)
{...}
premièrement, ça serait sympa de mettre l'erreur produite, on gagnerai du temps.
à ta place, j'utiliserai plutôt la fonction :
const Matrix& operator+(const Matrix& a,const Matrix& b)
{...}
Lampard88
Messages postés
86
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2009
26 janv. 2009 à 11:10
26 janv. 2009 à 11:10
C:\Documents and Settings\anas88\Bureau\matrice.cpp In function `int main()':
36 C:\Documents and Settings\anas88\Bureau\matrice.cpp no matching function for call to `Matrix::Matrix(Matrix)'
note C:\Documents and Settings\anas88\Bureau\matrice.cpp:15 candidates are: Matrix::Matrix(Matrix&)
note C:\Documents and Settings\anas88\Bureau\matrice.cpp:15 Matrix::Matrix(int)
c'est l'erreur Mr . svpl tu peux m'aider?
36 C:\Documents and Settings\anas88\Bureau\matrice.cpp no matching function for call to `Matrix::Matrix(Matrix)'
note C:\Documents and Settings\anas88\Bureau\matrice.cpp:15 candidates are: Matrix::Matrix(Matrix&)
note C:\Documents and Settings\anas88\Bureau\matrice.cpp:15 Matrix::Matrix(int)
c'est l'erreur Mr . svpl tu peux m'aider?
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
26 janv. 2009 à 11:24
26 janv. 2009 à 11:24
il te dit que la construction par copie n'existe pas.
Le plus simple est de créer un constructeur par copie. Donne aussi ton operateur d'affectation Matrix::operator=
Essai de faire :
C=m1;
Si ça coince, c'est que l'erreur ne viens pas de l'addition.
Le plus simple est de créer un constructeur par copie. Donne aussi ton operateur d'affectation Matrix::operator=
Essai de faire :
C=m1;
Si ça coince, c'est que l'erreur ne viens pas de l'addition.
Lampard88
Messages postés
86
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2009
26 janv. 2009 à 11:37
26 janv. 2009 à 11:37
j ai testé mon constructeur de copie il marche bien . j ai fait C=m1 et ça marche aussi . je les désactive l'operator = car can active et désactive reste le meme probleme je pense je le besoin pas .
operateur =
void Matrix::operator=(Matrix M)
{
for(int i=0; i<n; i++) // on détruit...
delete[] tab[i];
delete[] tab;
n = M.n;
tab = new double*[n]; // allocations
for (int i=0; i<n; i++)
{
tab[i] = new double[n];
for(int j=0; j<n; j++)
for(int i=0; i<n; i ++)
for(int j=0; j<n; j ++)
tab[i][j] = M.tab[i][j];
}
}
constructeur de copie
Matrix::Matrix(Matrix &M)
{
n = M.n;
tab = new double*[n]; // allocations
for (int i=0; i<n; i++)
{
tab[i] = new double[n];
for(int j=0; j<n; j++)
tab[i][j] = M.tab[i][j]; //recopie
}
}
merci bcp ________________________________________
operateur =
void Matrix::operator=(Matrix M)
{
for(int i=0; i<n; i++) // on détruit...
delete[] tab[i];
delete[] tab;
n = M.n;
tab = new double*[n]; // allocations
for (int i=0; i<n; i++)
{
tab[i] = new double[n];
for(int j=0; j<n; j++)
for(int i=0; i<n; i ++)
for(int j=0; j<n; j ++)
tab[i][j] = M.tab[i][j];
}
}
constructeur de copie
Matrix::Matrix(Matrix &M)
{
n = M.n;
tab = new double*[n]; // allocations
for (int i=0; i<n; i++)
{
tab[i] = new double[n];
for(int j=0; j<n; j++)
tab[i][j] = M.tab[i][j]; //recopie
}
}
merci bcp ________________________________________
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
26 janv. 2009 à 12:25
26 janv. 2009 à 12:25
essai :
Matrix::Matrix(const Matrix &M)
à la place de
Matrix::Matrix(Matrix &M)
Le compilateur cherche le constructeur Matrix::Matrix(Matrix M) , ce qui est différent. C'est ce que je te disait de faire créer le constructeur de copie Matrix::Matrix(Matrix M)
Il faut faire attention en C++ aux différents type d'argument et de retour Matrix, const Matrix et Matrix&, chacun a un sens différent et il faut bien voir que C=m+m2; met en actions plusieurs variables temporaire qui vont utilisé différemment ces différents types.
Matrix::Matrix(const Matrix &M)
à la place de
Matrix::Matrix(Matrix &M)
Le compilateur cherche le constructeur Matrix::Matrix(Matrix M) , ce qui est différent. C'est ce que je te disait de faire créer le constructeur de copie Matrix::Matrix(Matrix M)
Il faut faire attention en C++ aux différents type d'argument et de retour Matrix, const Matrix et Matrix&, chacun a un sens différent et il faut bien voir que C=m+m2; met en actions plusieurs variables temporaire qui vont utilisé différemment ces différents types.
Lampard88
Messages postés
86
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2009
26 janv. 2009 à 21:50
26 janv. 2009 à 21:50
merci bcp