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

Passing object parameter to a functor by reference

本文关键字:参数传递 对象 引用      更新时间:2023-10-16

我有一个以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

有什么想法可以在这里通过参考传递吗?显然使用了lat3d&第2行的lat不起作用。谢谢

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

lat3d ⪫

在当前代码中,NormalizeNer构造函数接受引用,但随后生成副本。