数值配方中显然未定义的变量
Apparently undefined variable in Numerical Recipes
我正在尝试使用Numerical Recipes,第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 &pp
的参数变量(MatDoub 是一个实现矩阵的类),但在第一个函数中它似乎是未定义的。这只是作者的错误,还是我对这里的C++有什么不了解的?
请注意,只有 p 被定义为上面的MatDoub
。这是否意味着pp与(MatDoub)(MatDoub)相同?这违反了我对C的理解。
在这一行中:
MatDoub pp(ndim+1,ndim);
pp
没有被使用,它正在被声明和建造。在此行之后pp
是一个初始化的对象,后续使用就可以了。您可以在此处找到有关constructor initialization
的更多信息。
相关文章:
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- QT C++中对全局变量的未定义引用
- C++ 如何检查 char 变量是否未定义(未初始化)
- 我可以定义一个 constexpr 匿名/未命名变量吗?
- 是否未定义将对函数范围变量的引用作为值返回
- 双循环变量的相等条件:未指定还是未定义
- 为什么 mfc 中静态文本工具中的变量未定义
- 未定义的行为错误:对成员变量的更改仅在某些上下文中可见
- 获取作为类变量的 Deque 大小时未定义的行为
- 标头中的成员变量未定义
- 使用静态变量未解析的外部符号/未定义的引用时出错
- 对成员函数和变量的未定义引用
- 从文件行读取未定义数量的变量
- C++类方法包含对静态变量的未定义引用
- C++ - 对"类::变量"的未定义引用
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- C++动态变量和未定义内存之间的差异
- 未定义对静态变量的引用,没有类
- 这是未初始化的变量使用未定义的行为吗
- 结构数组的未定义 c++ 变量