Boost logo

Boost Users :

From: Alain Leblanc (aalebl_at_[hidden])
Date: 2007-06-28 11:42:57


Hi,

I wrote some code where I want to iterate on the result of a regex
matching and call a member function for each match. It goes roughly
like this:

======================================================================
class XX {
    typedef bool (XX::*FuncPtr)(const
boost::match_results<std::string::const_iterator>& what);
    FuncPtr funcPtr;
};

bool XX::regex_callback(const
boost::match_results<std::string::const_iterator>& what) {
        return true;
}

void XX::addDelayedVariables(string expr) {
        funcPtr = &XX::regex_callback;
        regex re("([[:alpha::]][[:alnum]]+)(\[[^\\]]+])");
        sregex_iterator m1(expr.begin(), expr.end(), re);
        sregex_iterator m2;
        match_results<string::const_iterator> results; (*)
        bool a = (this->*funcPtr)(results); (*)
        for_each(m1, m2, (this->*funcPtr)); (#)
}
===========================================================================

When compiling (gcc 4.1 on FC 6) I get an error message at (#) that says:
    invalid use of non-static member function

I added the two lines with a (*) as a sanity check to see that I
declared the pointer-to-member-function correctly, and I have no
problem compiling those.

So my question is: is this a problem with me not understanding how to
handle pointer-to-member-functions in C++, or is there something with
the boost libraries that I'm missing or is preventing me from
performing this operation? I would appreciate any help or opinion.

thanks,

Alain


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net