-2
주어진 행렬에서 일부 값을 뺍니다. 어떻게 그 연산자를 오버로드 할 수 있습니까?C++ 연산자 오버로드 <double> - <Matrix>
MAIN.CPP
Matrix<double> m(10, 5);
auto r = 1.0 - m; //error: return type specified for 'operator double'
matrix.hpp
template <typename T>
class Matrix {
public:
Matrix operator double(T val) {
Matrix tmp(rows, cols);
for (unsigned int i = 0; i < rows; i++)
for (unsigned int j = 0; j < cols; j++) {
const unsigned int idx = VecToIdx({i, j});
tmp[idx] = val - this[idx];
}
return tmp;
}
}
'운영자 double'가의'를 반환해야 변환 연산자는 다음과 같습니다 후자의 경우
, 당신은 빼기 연산자가 아닌 변환 연산자, 예를 오버로드 할 필요 double''은'Matrix'가 아니며 – user463035818연산자'double'은 행렬을 double로 변환하지만 Matrix에는 이중 변환하지 않습니다. double을 취하는 행렬 생성자를 가지고 있다는 뜻입니까? – Arkadiy
수 없습니다! 그러나 '연산자 - (double, Matrix)'를 오버로드 할 수 있습니다. – user1810087