Re: TF1 as a member
Rene Brun (Rene.Brun@cern.ch)
Thu, 26 Mar 1998 12:28:43 +0100
Wouter Hulsbergen wrote:
> 
> Dear Root,
> I would like to create a member object TF1, in order to plot a member
> functions, like in
> 
> class A
> {
> public:
>   A() ;
>   Double_t fSquare(Double_t*, Double_t*) ;
> private
>   Double_t a;
>   TF1 gSquare ;
> };
> Double_t A::fSquare(Double_t* x, Double_t* par) { return a * *x * *x ; }
> A::A() : gSquare("gSquare",fSquare) {} ;
> 
> However, I get the compiler error
> Error 541: "nogeentest.C", line 12 # Nonstatic member function "double
>     A::fSquare(double *,double *)" is used incorrectly (must be either
> called
>     or used to form a pointer to member).
>     A::A() : gSquare("gSquare",fSquare) {} ;
>                                ^^^^^^^
> I tried a lot of other things, but didn't find anything that works. Can
> anybody tell me whether it is possible at all to create a TF1 from a
> member function, and if, how, and if not, why ?
> 
> Regards,
> Wouter
One of the TF1 constructors expect a pointer to a normal
static function of type
   Double_t func(Double_t *x, Double_t *par)
There is no constructor accepting a pointer to a class member function.
You should implement a static function as quoted above
and inside this function call your class member function.
Rene Brun