Here is the problem:
1) I have a class like so:
class some_class { public:     some_type some_value;     int some_function(double *a, double *b, int c, int d, void *e); };   2) Inside some_function, I use some_values from some_class object to get a result.
3) So, I have a concrete object and I want to get a pointer to this object some_function.
Is it possible? I can't use some_fcn_ptr because the result of this function depends on the concrete some_value of an object. 
How can I get a pointer to some_function of an object? Thanks.
typedef  int (Some_class::*some_fcn_ptr)(double*, double*, int, int, void*); 
                The pointer to member operators . * and ->* are used to bind a pointer to a member of a specific class object. Because the precedence of () (function call operator) is higher than . * and ->* , you must use parentheses to call the function pointed to by ptf .
Pointers to members allow you to refer to nonstatic members of class objects. You cannot use a pointer to member to point to a static class member because the address of a static member is not associated with any particular object.
Passing Pointers to Functions in C++ C++ allows you to pass a pointer to a function. To do so, simply declare the function parameter as a pointer type.
You cannot, at least it won't be only a pointer to a function.
Member functions are common for all instances of this class. All member functions have the implicit (first) parameter, this. In order to call a member function for a specific instance you need a pointer to this member function and this instance.
class Some_class { public:     void some_function() {} };  int main() {     typedef void (Some_class::*Some_fnc_ptr)();     Some_fnc_ptr fnc_ptr = &Some_class::some_function;      Some_class sc;      (sc.*fnc_ptr)();      return 0; }   More info here in C++ FAQ
Using Boost this can look like (C++11 provides similar functionality):
#include <boost/bind.hpp> #include <boost/function.hpp>  boost::function<void(Some_class*)> fnc_ptr = boost::bind(&Some_class::some_function, _1); Some_class sc; fnc_ptr(&sc);   C++11's lambdas:
#include <functional>  Some_class sc; auto f = [&sc]() { sc.some_function(); }; f(); // or auto f1 = [](Some_class& sc) { sc.some_function(); }; f1(sc); 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With