Передача параметра объекта в функтор по ссылке - PullRequest
5 голосов
/ 12 июня 2011

У меня есть функтор, который принимает объект 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 не работает.Спасибо!

1 Ответ

7 голосов
/ 12 июня 2011

Переменная-член lat также должна быть ссылкой:

lat3d ⪫

В вашем текущем коде конструктор NormalizeNer принимает ссылку, но затем делает копию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...