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