Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Problem with templatized overloaded operator () (http://www.velocityreviews.com/forums/t483401-problem-with-templatized-overloaded-operator.html)

StephQ 03-11-2007 07:43 PM

Problem with templatized overloaded operator ()
 
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


amparikh@gmail.com 03-11-2007 08:24 PM

Re: Problem with templatized overloaded operator ()
 
On Mar 11, 12:43 pm, "StephQ" <askmeo...@mailinator.com> wrote:
> 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);



All times are GMT. The time now is 05:01 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.