Я хочу умножить вектор на матрицу (из другого класса и заголовочного файла) в классе Vector, перегрузив оператор *.
Класс векторов не распознает матрицу, и я даже использовал ключевое слово Friend.
это код конструктора:
Я получаю сообщение об ошибке в части ячейки и + = часть.
Конструктор
Matrix operator*(Matrix matrix, Vector vector)
{
double sum_of_elements = 0;
Matrix res(matrix.getnumrows, matrix.getnumcols);
for (int i = 0; i <matrix.getnumcols(); i++)
{
for (int m = 0; m < vector.Index; m++) {
res.cell[i] += matrix.cell[i][m] * vector.cell[i];
}
}
return res;
}
Это заголовок для конструктора:
Обратите внимание, что я использовал ключевое слово friend.
Заголовок
class Vector
{
friend std::ostream &operator<<(std::ostream &out, const Vector &vec);
friend Matrix operator*(Matrix matrix, Vector vector);
private:
int Index;
std::vector<float> cell;
public:
Vector();
Vector(float a, float b, float c);
~Vector();
};
Это исходный файл, в котором код должен выполнять свою задачу
Источник
try {
Matrix m1(3, 3, 1.0);
Matrix m2(3, 4, 1.0);
m1(1, 2) = 14.92;
m1(0, 0) = 4.2;
Vector v1{9.1,1.2,8.2};
Vector v2 = m1 * v1;
std::cout << "v2:" << v2 << std::endl;;
}
catch (std::exception &e) {
std::cout << "Exception: " << e.what() << "!" << std::endl;
}
catch (...) {
std::cout << "Unknown exception caught!" << std::endl;
}
Вывод должен выглядеть следующим образом:
v2:[47.62
132.644
18.5]
Но я получаю 6 сообщений об ошибках:
Error C2248 'Matrix::cell': cannot access private member declared in class 'Matrix' vector.cpp 25
Error C2440 'initializing': cannot convert from 'Matrix' to 'Vector' source.cpp 17
Error C2676 binary '+=': '_Ty' does not define this operator or a conversion to a type acceptable to the predefined operator vector.cpp 25
Error C3867 'Matrix::getnumrows': non-standard syntax; use '&' to create a pointer to member vector.cpp 21
Error C3867 'Matrix::getnumcols': non-standard syntax; use '&' to create a pointer to member vector.cpp 21
Error (active) E0312 no suitable user-defined conversion from "Matrix" to "Vector" exists Source.cpp 17