Передача параметра объекта в функтор по ссылке

У меня есть функтор, который принимает объект 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) в строке 4 обновляет только lat.Ef в копии объекта lat3d. Я хочу иметь возможность передавать объект lat3d по ссылке, чтобы позже можно было получить последнее обновленное значение Ef:

    double lastEf = lattice.Ef

Есть идеи, как передать здесь по ссылке? По-видимому, использование lat3d и lat в строке 2 не работает. Спасибо!

5
задан Fred Foo 12 June 2011 в 19:08
поделиться