bool check_integrity( int pos ) const
{
if (( pos <= 0 ) || ( pos > max_seq ) || ( pos >= _length + _beg_pos ))
{
cerr << "!! invalid position: " << pos
<< " Cannot honor request\n";
return false;
}
if ( _isa == ns_unset )
{
cerr << "!! object is not set to a sequence."
<< " Please set_sequence() and try again!\n";
return false;
}
if ( pos > _elem->size()){
cout << "check_integrity: calculating "
<< pos - _elem->size() << " additional elements\n";
( this->*_pmf )( pos );
}
return true;
}
public:
typedef void (num_sequence::*PtrType)( int );
private:
PtrType _pmf;
The above code clip is part of class “num_sequence”. I got an error for the
following line:
( this->*_pmf )( pos );
The error is: ‘const num_sequence *const this’ Error: the object has
type qualifiers that are not compatible with the member function
Thanks!
You are trying to call a non-const member function pointed by
_pmffor a constant object*this. This is a violation of const-correctness rules.Either declare your
PtrTypeasor remove
constfrom yourcheck_integrityfunctionEither this or that. You didn’t provide enough information for someone else to decide which is the right thing to do in this case.