ich den Operator * für zwei Zwecke zu überlasten will:Mehrere Operanden für überladenen Operator *
Erstes Ziel:
m4 * 3.5; //m4 is a matrix object
Die oben genannte Arbeiten mit dieser Funktion absolut kein Problem mit der Umsetzung hier
Matrix operator *(const double n)
Allerdings, wenn ich versuche, das Gegenteil, dh
3.5 * m4;
Ich bekomme eine Fehlermeldung, dass es keine passenden Funktionen gibt. Also habe ich diese Funktion für diesen speziellen Fall
Matrix operator *(const double n, Matrix &obj)
{
for(unsigned int i = 0; i < rows; i++)
{
for(unsigned int j = 0; j < cols; j++)
{
obj[i][j] = obj[i][j] * n;
}
}
return *this;
}
Nun erhalte ich die Fehlermeldung:
error: ‘Matrix Matrix::operator*(double, Matrix&)’ must take either zero or one argument Matrix operator *(const double n, Matrix &obj);
error: no match for ‘operator*’ (operand types are ‘double’ and ‘Matrix’)
cout << 3.5 * m4 << endl;
Ich bin nicht sicher, wie das Problem der Operanden zu überwinden!
Leider kann ich BLAS, Eigen oder ähnliches nicht verwenden. Die Aufgabe erfordert, dass wir uns durch diesen Matrix-Unsinn kämpfen.
Bitte nicht bearbeiten mein Beitrag nur um meine Grammatik und falsche Großschreibung zu korrigieren. Ich bin hier um Hilfe zu programmieren, keine Englischstunde. Diese Fehler haben niemanden daran gehindert, meinen Code zu verstehen! – Jaydie