エラーが発生します:
no matching function for call to ‘findByPosition::findByPosition(std::vector<int>::size_type&, std::vector<int>::size_type&)’
i
&k
をキャストすると、次のようにint
なります。
no matching function for call to ‘findByPosition::findByPosition(int, int)’
述語の何が問題なのかわかりません。()
必要に応じて演算子をオーバーロードしました:
struct findByPosition
{
const Node needle;
findByPosition(const Node& sought) : needle(sought) {}
bool operator()(int i,int j) const
{
return ((needle.i == i) && (needle.j == j));
}
};
SparseMatrix& SparseMatrix::operator*=(const SparseMatrix &other)
{
SparseMatrix SparseMatrixResult(_numRow, other._numCol);
vector<Node>::iterator rowMulti, colMulti;
if(_numCol != other._numRow)
{
// error multiplying
}
for(std::vector<int>::size_type i = 0; i != (unsigned int)_numRow; i++) {
for(std::vector<int>::size_type j = 0; j != (unsigned int)_numCol; j++) {
for(std::vector<int>::size_type k = 0; k != (unsigned int)_numCol; k++)
{
rowMulti = find_if(_matrix.begin(), _matrix.end(), findByPosition(i,k));
}
}
}
*this = SparseMatrixResult;
return *this;
}
_matrix
タイプは次のとおりです。
vector<Node> _matrix;