【问题标题】:Apparently undefined variable in Numerical Recipes数字食谱中显然未定义的变量
【发布时间】:2016-01-27 23:38:31
【问题描述】:

我正在尝试使用数字食谱,第 3 版,Amoeba.h,但找不到定义变量的位置。这是代码的开头:

struct Amoeba {
    const Doub ftol;
    Int nfunc;
    Int mpts;
    Int ndim;
    Doub fmin;
    VecDoub y;
    MatDoub p;
    Amoeba(const Doub ftoll) : ftol(ftoll) {}
    template <class T>
    VecDoub minimize(VecDoub_I &point, const Doub del, T &func)
    {
        VecDoub dels(point.size(),del);
        return minimize(point,dels,func);
    }
    template <class T>
    VecDoub minimize(VecDoub_I &point, VecDoub_I &dels, T &func)
    {
        Int ndim=point.size();
        MatDoub pp(ndim+1,ndim);           <--------- XXXXXXX
        for (Int i=0;i<ndim+1;i++) {
            for (Int j=0;j<ndim;j++)
                pp[i][j]=point[j];
            if (i !=0 ) pp[i][i-1] += dels[i-1];
        }
        return minimize(pp,func);
    }
    template <class T>
    VecDoub minimize(MatDoub_I &pp, T &func)
    {
        const Int NMAX=5000;
        const Doub TINY=1.0e-10;
        Int ihi,ilo,inhi;
        mpts=pp.nrows();
        ndim=pp.ncols();
        VecDoub psum(ndim),pmin(ndim),x(ndim);
        p=pp;
.....

在标有 X 的行上,使用了变量 pp,但似乎没有定义。在下一个方法中,pp 用作定义为MatDoub_I &amp;pp 的参数变量(MatDoub 是一个实现矩阵的类),但在第一个函数中它似乎是未定义的。这只是作者的一个错误,还是我在这里对 C++ 不了解?

请注意,上面仅将 p 定义为 MatDoub。这是否意味着 pp 与 (MatDoub)(MatDoub) 相同?这违反了我对 C 的理解。

【问题讨论】:

    标签: c++ undefined


    【解决方案1】:

    在这一行:

     MatDoub pp(ndim+1,ndim);
    

    pp 未被使用,它正在被声明和构造。在这行之后pp 是一个初始化对象,后续使用就可以了。你可以找到更多关于constructor initialization here.的信息

    【讨论】:

    • 哦,原来是构造函数。
    • @TylerDurden 不要为此自责
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2014-06-26
    • 2023-01-23
    相关资源
    最近更新 更多