c++编译问题(急!!!)

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:28:03
#include <boost/numeric/ublas/vector.hpp>
typedef boost::numeric::ublas::vector<double> Ubcv;
class DiagMatrix
{ public:
......
void operator+=(const DiagMatrix& o);
void operator*=(const double cons);
.......
}

class MultiDiagMatrix
{
public:
void operator+=(const MultiDiagMatrix& o);
void operator*=(const double cons);
const double& operator () (const uint i, const uint j) const;
double& operator () (const uint i, const uint j);
Ubcv* _junk;
.......
}

const double& MultiDiagMatrix::operator () (const uint i, const uint j) const
{ assert(j>=i);
uint bi, bj, blockNum;
blockNum = convertToBlock(bi,bj,i,j);
const DiagMatrix& block = *(_blocks[blockNum]);
if (block.withinBounds(bi,bj))
{ return block(bi,bj);
}
else
{ return _junk[i](j-i); // 编译正确
}
}

double& MultiDiagMatrix:

说白了就是你把一个常引用传给一个非常引用了...

--

请保持定义和声明的返回值一致...

double& MultiDiagMatrix::operator () (const uint i, const uint j)
改为
const double& MultiDiagMatrix::operator () (const uint i, const uint j)