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

5

我有一个函数对象,它以 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);

这段代码是可行的,但是在第四行使用我的类成员函数lat.setEf(ef)只会更新lat3d对象的副本中的lat.Ef。我想要能够通过引用传递lat3d对象,以便稍后可以获取最新更新的Ef值:

    double lastEf = lattice.Ef

有什么办法可以在这里通过引用传递参数吗?显然,在第2行中使用lat3d & lat并不起作用。谢谢!

1个回答

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

在你目前的代码中,NormalizeNer 构造函数接受一个引用,但是却进行了复制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接