Hi,
I've wrote a class inherit from boost matrix, however, I can't figure out how to access the random access operator "()" inside the class.
For instance, I can use "()" outside the class by m.(x, y) = some_value, however, inside the class I can't just using (x, y) = some_value, although my compiler didn't complain this way, some_value will not be assigned successfully.
Neither this(x, y), *this(x, y), this->(x, y) will pass the compiler. (I have to confess that I'm not familiar with the usage of "this"...)
Besides, I can't examine the value of x_location and y_location inside the following for-loop, is it a bug of gdb?
Here is my code, any idea?
Code:#ifndef TARGET_REGION_H #define TARGET_REGION_H #include <iostream> #include <vector> #include <utility> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> using namespace std ; using namespace boost::numeric ; class Target_Region: public ublas::matrix<bool> { public: Target_Region( const int width, const int height, const vector<int> to_be_inpaint_vec_x, const vector<int> to_be_inpaint_vec_y ) { assert( to_be_inpaint_vec_x.size() == to_be_inpaint_vec_y.size() ) ; bool preserve_previous_value = false ; resize( width, height, preserve_previous_value ) ; // for each pixel location in to_be_inpaint_vec, markup to true in the target region vector<int>::const_iterator x_location_iter = to_be_inpaint_vec_x.begin() ; vector<int>::const_iterator y_location_iter = to_be_inpaint_vec_y.begin() ; int x_location = 0 ; int y_location = 0 ; for( ; x_location_iter != to_be_inpaint_vec_x.end() ; ++x_location_iter, ++y_location_iter ) { x_location = *x_location_iter ; y_location = *y_location_iter ; ( x_location, y_location ) = true ; } } private: }; #endif



LinkBack URL
About LinkBacks


