2011-06-12 139 views
5

我有一個仿函數,它將一個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不起作用。謝謝!

回答

7

成員變量lat應該是一個參考,以及:

lat3d ⪫ 

在當前的代碼中,NormalizeNer構造函數接受一個參考,但隨後進行復印。

+0

謝謝!這解決了問題。 – Tyler 2011-06-12 19:55:12