2011-06-12 21 views
5

Bir lat3d nesnesini parametre olarak alan bir functor'ım var ve bu functor'ı ef'i ayarlayan bir kök bulma yordamına aktarmak istiyorum.Nesne parametresini referans olarak bir functor'a geçirme

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

Bu benim sınıf üye işlev lat.setEf (ef) kullanılarak dışında çalışır: gibi rutin findRoot bulma

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

funktoru örneği ve köküne geçti: funktoru benziyor satır 4 sadece lat3d nesnesinin bir kopyasında lat.Ef güncellemeleri.

double lastEf = lattice.Ef 

herhangi bir fikir nasıl buraya referans olarak geçmek: ben daha sonra Ef son güncellenmiş değeri çıkabiliriz referans olarak lat3d nesneyi geçmek isterler? Görünüşe göre 2 satırında lat3d & lat kullanılmıyor. Teşekkürler!

cevap

7

üye değişkeni lat bir yanı referans olmalıdır: Geçerli kodunda

lat3d ⪫ 

, NormalizeNer yapıcı bir başvuru kabul ama sonra bir kopyasını yapar.

+0

Teşekkürler! Bu problemi çözdü. – Tyler

İlgili konular