я перегрузил * = оператор с помощью этой функции члена:не Getting не подходят для оператора перегружена
template<class U>
Matriz<T> & operator*=(const Matriz<U> & valor);
А также у меня есть конструктор Матриз так:
Matriz(const std::vector<T> & vector);
Ну, я хотел бы чтобы сделать что-то вроде этого:
double vetor[3] = { 1, 2, 3 };
std::vector<double> vec(vetor, vetor + 3);
Matriz<double> A("src//imatriz.dat"); //Creates a matrix with parameters from a file.
A*=vec;
То есть, я хотел бы умножить матрицу на вектор. Проблема в том, что компилятор возвращает, что для оператора нет соответствия.
--- EDIT2 ---
Как было предложено, я также попытался это:
template<class U>
friend Matriz<T> & operator*=(Matriz<U> & lhs, const Matriz<U> & rhs)
но A * = VEC до сих пор не работает.
Любая идея? Если вам нужно больше кода, нет никаких проблем, чтобы поместить его здесь.
Если ваша перегрузка является глобальной функцией (не могу понять из вашей пасты), она не удастся. Вы можете рассмотреть возможность применения метода класса. – diegoperini
Это метод класса. –
, тогда вы должны перегрузить '* =' брать вектор в качестве параметра? 'A * = vec;' должен встраивать вызов в нечто вроде этого 'operator * = (A, vec);' где vec имеет тип vector. –