Puntatori a funzioni

M

massi

Un saluto a tutti, ho il seguente problema:
ho definito una funzione che trova lo zero di una funzione con il
metodo delle secanti, in un file cpp:

double secant (double (*f)(double), double x0, double x1)
{
[...]
}

ed il relativo header file:

double secant (double (*f)(double), double x0, double x1);

ho inoltre definito una classe che comprende tra le funzioni membro le
seguenti:

void CmyClass::calcola(void)
{
double x,y;
x = secant(&CmyClass::eq_prova,-2,10);

y = eq_prova(x);
}

double CmyClass::eq_prova(double x)
{
return (x - 4) * (x + 5);
}

Al momento della compilazione della classe mi viene mostrato
quest'errore:

c:\.....\myclass.cpp(28) : error C2664: 'secant' : cannot convert
parameter 1 from 'double (__thiscall CmyClass::* )(double)' to 'double
(__cdecl *)(double)'

potete aiutarmi? Grazie in anticipo.
 
A

Alf P. Steinbach

* massi:
> [italian]

Please post english to this international group, since most of us here
don't understand italian.

Use an italian national group such as, presumably, [it.comp.lang.c++],
for C++ language discussions in italian.

Thank you,

- The kind off-topicality bobby
 
C

Christian Gollwitzer

massi said:
double secant (double (*f)(double), double x0, double x1);

ho inoltre definito una classe che comprende tra le funzioni membro le
seguenti:

void CmyClass::calcola(void)
{
double x,y;
x = secant(&CmyClass::eq_prova,-2,10);

y = eq_prova(x);
}

double CmyClass::eq_prova(double x)
{
return (x - 4) * (x + 5);
}

Al momento della compilazione della classe mi viene mostrato
quest'errore:

c:\.....\myclass.cpp(28) : error C2664: 'secant' : cannot convert
parameter 1 from 'double (__thiscall CmyClass::* )(double)' to 'double
(__cdecl *)(double)'

A member function gets passed an additional parameter, the this pointer
to the underlying object. Since your computation function eq_prova does
not use any data member from CMyClass, you can simply make it "static".
(Maybe you need to add "extern C", too)

Christian
 

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

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,608
Members
45,241
Latest member
Lisa1997

Latest Threads

Top