Matrizen multiplikation
-
Hallo ihr alle,
ich hab ein Problem bei der Multiplikation zweier Matrizen.
#include <iostream> #include <iomanip> using namespace std; class QuadMatrix { private: int dimension; double matrix[3][3]; public: QuadMatrix::QuadMatrix(int j); QuadMatrix::~QuadMatrix(); // Definieren das die Fkt. doch auf die Daten zugreifen können. friend inline QuadMatrix operator*(QuadMatrix m1, QuadMatrix m2); friend ostream operator<<(ostream os, QuadMatrix &m); friend istream operator>>(istream is, QuadMatrix &m); }; QuadMatrix::QuadMatrix(int j) { dimension = j; } QuadMatrix::~QuadMatrix(){} istream operator>>(istream is, QuadMatrix &m) { for(int i=0;i<m.dimension;i++) for(int j=0;j<m.dimension;j++) { cout<<"Bitte geben Sie das Element["<<i+1<<"]["<<j+1<<"] ein!\n"; is>>m.matrix[i][j]; } return is; } inline QuadMatrix operator*(QuadMatrix m1, QuadMatrix m2) { QuadMatrix m(m1.dimension); for(int i=0;i<m1.dimension;i++) for(int j=0;j<m1.dimension;j++) m.matrix[i][j]=m1.matrix[i][j]*m2.matrix[i][j]; return m; } ostream operator<<(ostream os, QuadMatrix &m) { for(int i=0;i<m.dimension;i++) { os << "|"; for(int j=0;j<m.dimension;j++) os << setw(5) << m.matrix[i][j]; os << "|" << endl; } os << endl; return os; } int main() { int dimension = 0; cout << "Bitte geben Sie die Dimension der Matrix ein!\n"; cin >> dimension; QuadMatrix matrix1(dimension), matrix2(dimension); cin >> matrix1 >> matrix2; cout << "\nDie erste eingegebene Matrix ist\n" << matrix1; cout << "\nDie zweite eingegebene Matrix ist\n" << matrix2; cout << "\nDas Produkt der beiden Matrizen ist\n" << matrix1*matrix2; system("PAUSE"); return 0; }Folgender Fehler
Error 1 error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>' c:\program files\microsoft visual studio 10.0\vc\include\istream 860
Das heißt ich greife auf einen privaten Typen zu wo ich es nicht darf, ich finde jedoch den Fehlern nicht....
Über Hilfe wäre ich sehr dankbar!
lg Zermy
-
Du übergibst deinen >> und << operatoren istream und ostream als Werte. Diese können aber nicht kopiert werden. Übergib Referenzen.
Abgesehen davon, hat diese "Multiplikation", die du da machst, nichts mit einer Matritzenmultiplikation zu tun...
-
Vielen Dank für deine Antwort!
Du hast recht, ich muss mich nochmal ransetzen wie ich ne Matrix multipliziere
und auch wie ich das mit den Referenzen mache, dann sollte es ja laufen 
LG
Zermy