我有一个使用lat3d对象作为参数的仿函数,我想将此仿函数传递给调整ef的寻根例程。仿函数看起来像:
struct NormalizeNer {
NormalizeNer(lat3d &lat) : lat(lat) {}
double operator()(const double ef) {
lat.setEf(ef);
// some other irrelevant code
}
public:
lat3d lat;
};
实例化仿函数,并将其传递给根查找例程findRoot,如下所示:
lat3d lattice();
NormalizeNer normalize(lattice);
double efroot = findRoot(normalize, eflo, efhi, eftolerance);
这行得通,除了在第4行中使用我的类成员函数lat.setEf(ef)仅更新lat3d对象拷贝中的lat.Ef。我希望能够通过引用传递lat3d对象,以便以后可以获取Ef的最新更新值:
double lastEf = lattice.Ef
任何想法如何通过引用这里?显然,在第2行中使用lat3d&lat无效。谢谢!
最佳答案
成员变量lat
也应该是一个引用:
lat3d ⪫
在您当前的代码中,
NormalizeNer
构造函数接受引用,然后进行复制。