编译错误 - boost :: numeric :: ublas :: coordinate_matrix

时间:2012-03-03 02:09:19

标签: c++ gcc boost ublas

对于一般信息,我使用boost 1.46。自此版本以来,ublas lib没有任何变化。

我使用gcc版本4.6进行编译。

所以现在我的问题。我有一个非常基本的类,它应该适合自定义接口的boost矩阵类。该课程如下:

template< typename TYPE >
class BoostCoordinateMatrix: public MatrixInterface<TYPE> ,
    public boost::numeric::ublas::coordinate_matrix<TYPE> {
public:
BoostCoordinateMatrix() :
    boost::numeric::ublas::coordinate_matrix<TYPE>() {
}

BoostCoordinateMatrix(int rows, int columns) :
    boost::numeric::ublas::coordinate_matrix<TYPE>(rows, columns) {
}

int rows() const {
    return this->size1();
}

int columns() const {
    return this->size2();
}

virtual void set(int row, int column, TYPE value) {
    (*this)(row, column) = value;
}

TYPE& operator()(int i, int j) {
    return this->boost::numeric::ublas::coordinate_matrix<TYPE>::operator()(
            i, j).ref();
}

TYPE operator()(int i, int j) const {
    return this->boost::numeric::ublas::coordinate_matrix<TYPE>::operator()(
            i, j);
}

};

编译这个类时,我得到两个operator(int i,int j)的编译器错误:

  

./ inc / boost_coordinate_matrix.h:38:15:从'TYPE BoostCoordinateMatrix :: operator()(int,int)实例化const [with TYPE = double]'   ./inc/flow_field_matrix_free_interface_impl.h:697:1:从这里实例化   /usr/include/c++/4.6/bits/stl_tempbuf.h:257:6:错误:类型'boost :: numeric :: ublas :: index_triple,boost :: numeric :: ublas的非const引用的初始化无效: :unbounded_array,boost :: numeric :: ublas :: unbounded_array&gt; &GT; &gt;&amp;'来自'boost :: numeric :: ublas :: indexed_iterator,boost :: numeric :: ublas :: unbounded_array,boost :: numeric :: ublas :: unbounded_array&gt;类型的右值&gt;,std :: random_access_iterator_tag&gt; :: reference {aka boost :: numeric :: ublas :: index_triple,boost :: numeric :: ublas :: unbounded_array,boost :: numeric :: ublas :: unbounded_array&gt; &GT; &GT;}”   /usr/include/c++/4.6/bits/stl_tempbuf.h:232:5:错误:传递'void std :: __ uninitialized_construct_buf(_ForwardIterator,_ForwardIterator,_Tp&amp;)的参数3 [与_ForwardIterator = boost :: numeric :: ublas :: index_triple,boost :: numeric :: ublas :: unbounded_array,boost :: numeric :: ublas :: unbounded_array&gt; &GT; &gt; *,_Tp = boost :: numeric :: ublas :: index_triple,boost :: numeric :: ublas :: unbounded_array,boost :: numeric :: ublas :: unbounded_array&gt; &GT; &GT;]”

我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

好的,我想我发现了问题:

http://boost.2283326.n4.nabble.com/example-usage-of-coordinate-matrix-fails-on-Ubuntu-11-04-amd-64-td3580407.html

我刚测试了最新的升级版本,但这个版本也没有编译。