Pointer to member function

Hi, i have a problem in pointing of functions. If i use just C it looks like:

double Func1 (double x)
{
return x;
}

double Func2 ( double (*f) (double), double y )
{
return (*f)(y);
}

main( double x)
{
A=Func2(Func1(x));
}

But when i trying to make all this inside class i have errors. My code looks like that:

class SomeClass
{
private:
double x1,x2;

public:
double result;

double Func1(double y) {return x1*y}
double Func2(SomeClass::*f (double), double z) {return (*f)(z)}

void get_result()
{
result=Func2(SomeClass::Func1, x2);
}

};

so explain please where i`m mistaken and how to do it right.
(sorry for language - English not my native)
Last edited on
Pointers to nonstatic member functions are a very different concept from pointers to functions.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
class SomeClass 
{
 private:
    double x1,x2;

 public:
    SomeClass(double x1, double x2) : x1(x1), x2(x2) {}
    double result;

    double Func1(double y)
    {
        return x1*y;
    }

    double Func2(double (SomeClass::*f)(double), double z)
    {
        return (this->*f)(z);
    }

    void get_result()
    {
        result = Func2(&SomeClass::Func1, x2);
    }

};
int main()
{
    SomeClass sc(7, 4);
    sc.get_result();
    std::cout << sc.result << '\n';

}

demo: http://ideone.com/F7LBE
Last edited on
Wow, it works! Thanks :)
Topic archived. No new replies allowed.