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