Problem with templatized overloaded operator ()

S

StephQ

I can't get this code working:

class Scheme_euler
{
private:
....

public:
....

template<class D, double (D::*drift)(double) const, double
(D::*diffu)(double) const>
void operator ()(Path& thePath, const D& theD) const;
};

Scheme_euler theEu(0, 1, 100); //constructor
theEu<Diff_sine, &Diff_sine::mu, &Diff_sine::sigma>
(thePath, theDiff_sine);

However if I don't overload the operator () but just consider a member
solve function, then using:
theEu.solve<Diff_sine, &Diff_sine::mu, &Diff_sine::sigma>
(thePath, theDiff_sine);
woks fine.

So the problem is in overloading the operator, but I can't understand
where I'm wrong.

Thank you in advance for your help!
StephQ
 
A

amparikh

I can't get this code working:

class Scheme_euler
{
private:
....

public:
....

template<class D, double (D::*drift)(double) const, double
(D::*diffu)(double) const>
void operator ()(Path& thePath, const D& theD) const;

};

Scheme_euler theEu(0, 1, 100); //constructor
theEu<Diff_sine, &Diff_sine::mu, &Diff_sine::sigma>
(thePath, theDiff_sine);

However if I don't overload the operator () but just consider a member
solve function, then using:
theEu.solve<Diff_sine, &Diff_sine::mu, &Diff_sine::sigma>
(thePath, theDiff_sine);
woks fine.

So the problem is in overloading the operator, but I can't understand
where I'm wrong.

Thank you in advance for your help!
StephQ


I havent tried the code but just off the back of my mind I recall
similar problems with the function operator.

try the following..

theEu.operator()<Diff_sine, &Diff_sine::mu, &Diff_sine::sigma>
(thePath, theDiff_sine);
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top