考虑到以下课程:
namespace ublas = boost::numeric::ublas;
class Foo {
private:
ublas::compressed_matrix<float> foo_mtr_;
}我想用这样的方式封装operator()
Foo foo;
foo(2, 3) = 3.0f;就等于
foo_mtr_(2, 3) = 3.0f;我试过了
float &operator () (int i, int_type j) {
return foo_mtr_(i, j);
}但它没有编译:
错误:将类型“float&”的绑定引用绑定到“const float”丢弃限定符
发布于 2018-03-13 15:08:23
ublas::compressed_matrix<T>定义了reference和const_reference类型,您应该使用它们来代替T&或const T&。重写operator()(int,int),如下所示
ublas::compressed_matrix<float>::reference operator () (int i, int_type j) {
return foo_mtr_(i, j);
}https://stackoverflow.com/questions/49258356
复制相似问题