Z
zqiang320
I have a structure, it is
struct Fitmrq {
....
void (*funcs)(const Doub, VecDoub_I &, Doub &, VecDoub_O &);
.......
Fitmrq(VecDoub_I &xx, VecDoub_I &yy, VecDoub_I &ssig, VecDoub_I &aa,
void funks(const Doub, VecDoub_I &, Doub &, VecDoub_O &), const Doub
TOL=1.e-3) : ndat(xx.size()), ma(aa.size()), x(xx), y(yy), sig(ssig),
tol(TOL), funcs(funks), ia(ma), alpha(ma,ma), a(aa), covar(ma,ma) {
for (Int i=0;i<ma;i++) ia = true;
}
............
}
void fgauss(const Doub x, VecDoub_I &a, Doub &y, VecDoub_O &dyda) {
Int i,na=a.size();
..........
}
In my main program I declare a instance of Fitmrq:
int main(){
.....
void fgauss(const Doub, VecDoub_I, Doub, VecDoub_O);
Fitmrq mrq(&xx,&yy,&ssigg,&a,fgauss,0.000001);
}
When I compile it , I got some error below: Could sombody tell me how
to solve this problem ? Thank you very much!
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp||In constructor
`Fitmrq::Fitmrq(const VecDoub_I&, const VecDoub_I&, const VecDoub_I&,
const VecDoub_I&, void (*)(Doub, const VecDoub_I&, Doub&, VecDoub_O&),
Doub)':|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|14|warning:
`Fitmrq::alpha' will be initialized after|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|12|warning: `VecDoub
Fitmrq::a'|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|20|warning: when
initialized here|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp||In function `int main
()':|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|187|error: no matching
function for call to `Fitmrq::Fitmrq(VecDoub*, VecDoub*, VecDoub*,
VecDoub*, void (&)(Doub, VecDoub_I, Doub, VecDoub_O), double)'|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|5|note: candidates
are: Fitmrq::Fitmrq(const Fitmrq&)|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|19|
note: Fitmrq::Fitmrq(const VecDoub_I&, const
VecDoub_I&, const VecDoub_I&, const VecDoub_I&, void (*)(Doub, const
VecDoub_I&, Doub&, VecDoub_O&), Doub)|
||=== Build finished: 1 errors, 3 warnings ===|
struct Fitmrq {
....
void (*funcs)(const Doub, VecDoub_I &, Doub &, VecDoub_O &);
.......
Fitmrq(VecDoub_I &xx, VecDoub_I &yy, VecDoub_I &ssig, VecDoub_I &aa,
void funks(const Doub, VecDoub_I &, Doub &, VecDoub_O &), const Doub
TOL=1.e-3) : ndat(xx.size()), ma(aa.size()), x(xx), y(yy), sig(ssig),
tol(TOL), funcs(funks), ia(ma), alpha(ma,ma), a(aa), covar(ma,ma) {
for (Int i=0;i<ma;i++) ia = true;
}
............
}
void fgauss(const Doub x, VecDoub_I &a, Doub &y, VecDoub_O &dyda) {
Int i,na=a.size();
..........
}
In my main program I declare a instance of Fitmrq:
int main(){
.....
void fgauss(const Doub, VecDoub_I, Doub, VecDoub_O);
Fitmrq mrq(&xx,&yy,&ssigg,&a,fgauss,0.000001);
}
When I compile it , I got some error below: Could sombody tell me how
to solve this problem ? Thank you very much!
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp||In constructor
`Fitmrq::Fitmrq(const VecDoub_I&, const VecDoub_I&, const VecDoub_I&,
const VecDoub_I&, void (*)(Doub, const VecDoub_I&, Doub&, VecDoub_O&),
Doub)':|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|14|warning:
`Fitmrq::alpha' will be initialized after|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|12|warning: `VecDoub
Fitmrq::a'|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|20|warning: when
initialized here|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp||In function `int main
()':|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|187|error: no matching
function for call to `Fitmrq::Fitmrq(VecDoub*, VecDoub*, VecDoub*,
VecDoub*, void (&)(Doub, VecDoub_I, Doub, VecDoub_O), double)'|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|5|note: candidates
are: Fitmrq::Fitmrq(const Fitmrq&)|
E:\mydoc\book\Numerical.Recipes\jacobi\main.cpp|19|
note: Fitmrq::Fitmrq(const VecDoub_I&, const
VecDoub_I&, const VecDoub_I&, const VecDoub_I&, void (*)(Doub, const
VecDoub_I&, Doub&, VecDoub_O&), Doub)|
||=== Build finished: 1 errors, 3 warnings ===|