2011-06-12 16 views
5

Tengo un funtor que toma un objeto lat3d como parámetro, y quiero pasar este funtor a una rutina de búsqueda de raíz que ajusta ef. El funtor parece:Pasando el parámetro de objeto a un funtor por referencia

struct NormalizeNer { 
     NormalizeNer(lat3d &lat) : lat(lat) {} 
     double operator()(const double ef) { 
      lat.setEf(ef); 
      // some other irrelevant code 
     } 
    public: 
     lat3d lat; 
    }; 

el funtor se instancia y se pasa a la raíz encontrar FindRoot rutinario como:

lat3d lattice(); 
    NormalizeNer normalize(lattice); 
    double efroot = findRoot(normalize, eflo, efhi, eftolerance); 

Esto funciona, excepto que usando mi función miembro de la clase lat.setEf (EF) en La línea 4 solo actualiza lat.Ef en una copia del objeto lat3d. Quiero ser capaz de pasar el objeto lat3d por referencia por lo que más tarde pueda salir el último valor actualizado de Ef:

double lastEf = lattice.Ef 

Alguna idea de cómo pasan por referencia aquí? Al parecer, usar lat3d & lat en la línea 2 no funciona. ¡Gracias!

Respuesta

7

variables lat El miembro debe ser una referencia, así:

lat3d ⪫ 

En su código actual, el NormalizeNer constructor acepta una referencia, pero luego hace una copia.

+0

Gracias! Eso resolvió el problema. – Tyler

Cuestiones relacionadas