通过引用将对象参数传递给仿函数

时间:2011-06-12 19:03:33

标签: c++ pass-by-reference functor

我有一个将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 as:

    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不起作用。谢谢!

1 个答案:

答案 0 :(得分:7)

成员变量lat也应该是一个引用:

lat3d ⪫

在当前代码中,NormalizeNer构造函数接受引用但随后复制。