2011-06-12 10 views
5

द्वारा एक मज़ेदार को ऑब्जेक्ट पैरामीटर पास करना मेरे पास एक मज़ेदार है जो एक पैरा 3 डी ऑब्जेक्ट को पैरामीटर के रूप में लेता है, और मैं इस मज़ेदार को रूट खोज दिनचर्या में पास करना चाहता हूं जो ef को समायोजित करता है। दिनचर्या findRoot खोजने के रूप मेंसंदर्भ

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

functor instantiated और जड़ को पारित कर दिया है:

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

यह काम करता है सिवाय इसके कि में मेरी कक्षा सदस्य समारोह lat.setEf (EF) का उपयोग कर functor तरह लग रहा है लाइन 4 केवल lat3d ऑब्जेक्ट की एक प्रति में lat.Ef अद्यतन करता है।

double lastEf = lattice.Ef 

कोई भी विचार कैसे यहां संदर्भ द्वारा पारित करने के लिए: मैं तो मैं बाद में एफई के अंतिम अद्यतन मूल्य बाहर निकल सकते हैं संदर्भ द्वारा lat3d वस्तु पारित करने के लिए सक्षम होना चाहते हैं? स्पष्ट रूप से lat3d & लाइन 2 में अक्षांश का उपयोग नहीं करता है। धन्यवाद!

उत्तर

7

सदस्य चर lat रूप में अच्छी तरह एक संदर्भ होना चाहिए:

lat3d ⪫ 

अपने वर्तमान कोड में, NormalizeNer निर्माता एक संदर्भ को स्वीकार करता है, लेकिन फिर एक प्रतिलिपि बनाता है।

+0

धन्यवाद! इसने समस्या हल की। – Tyler