2012-03-19 140 views
0

給予這樣的:提振,matrix_proxy,常量矩陣

void foo(const matrix<double>& lol) 
{ 
    matrix_row<matrix<double> > lolwut(lol, 5); 
} 

錯誤:

no matching function for call to ‘boost::numeric::ublas::matrix_row<boost::numeric::ublas::matrix<double> >::matrix_row(const boost::numeric::ublas::matrix<double>&, size_t&)’ 

如何unconst在函數的參數或使用哪種解決方法給出的參考?我不知道,如果簡單的分配

matrix<double> tmp = lol; 

不會有任何開銷。

回答

2

這裏是你如何做到這一點使用BOOST_AUTO

void foo(const matrix<double>& lol) 
{ 
    matrix_row< const matrix<double> > lolwut(lol, 5); 
} 

,如果編譯到C++ < 11所需要的空間,否則一些有缺陷的編譯器將它解釋作爲一個右位移(>>)運算符

1

嘗試使用BOOST_AUTO

代碼:

BOOST_AUTO(r, row(lol, 5)); 
+0

很明顯,謝謝!在我質疑之後,我發現了它。解決方案是matrix_row > lolwut((矩陣),lol,5); – 2012-03-19 13:05:31