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

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

问题描述:

我有一个仿函数,它将一个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行只更新lat3d对象副本中的lat.Ef。我希望能够通过引用传递的lat3d对象,所以我可以在以后走出的EF最后更新值:

double lastEf = lattice.Ef 

任何想法如何通过引用路过这里?显然在第2行使用lat3d & lat不起作用。谢谢!

成员变量lat应该是一个参考,以及:

lat3d ⪫ 

在当前的代码中,NormalizeNer构造函数接受一个参考,但随后进行复印。

+0

谢谢!这解决了问题。 – Tyler 2011-06-12 19:55:12