2014-04-22 4 views
9

आवंटित करने से पहले मैं ओपन सोर्स प्रोजेक्ट आरओएस का अध्ययन कर रहा हूं। जबकि मैंने अजीब कोड देखा।आवंटित पॉइंटर को

Server server(n, "do_dishes", boost::bind(&execute, _1, &server), false); 

चर सर्वर पहले यह सर्वर के रूप में आवंटित है प्रयोग किया जाता है। क्या यह संभव है? कम से कम, मेरा विजुअल स्टूडियो 2010 कंपाइलर कोड की शैली को समझ में नहीं आता है। कृपया मुझे बताएं कि क्या यह वास्तव में संभव कोड है, या नहीं। कोड की

मूल दस्तावेज: http://wiki.ros.org/actionlib#C.2B-.2B-_SimpleActionServer


--------- जोड़ा

अपने दयालुता के लिए धन्यवाद। हालांकि मुझे "सर्वर" मिला: अनदेखा पहचानकर्ता "त्रुटि जब मैं इसे संकलित करता हूं। तो मैंने सरल कोड का परीक्षण किया।

class TestCls { 
public: 
    TestCls(TestCls *aa) 
    { 

    } 
}; 

int main(int argc, char **argv) 
{ 
    TestCls tt(&tt); 

} 

यह भी वही त्रुटि करता है। "'टीटी': अविकसित पहचानकर्ता"। क्या मुझे कुछ याद आ रहा है? क्रिप्या मेरि सहायता करे।

+4

यह आपके कंपाइलर के साथ एक बग जैसा दिखता है। इसे संकलित करना चाहिए। [जी ++ उदाहरण] (http://coliru.stacked-crooked.com/a/b5dc8e8ff6b70059), [क्लैंग ++ उदाहरण] (http://coliru.stacked-crooked.com/a/e238b2e6abc2f93b)। – Mankarse

+0

ठीक है। ऐसा लगता है कि एमएस विजुअल स्टूडियो 2010 इसे संकलित नहीं कर सकता है। धन्यवाद मंकर्स। धन्यवाद बिल गेट्स। –

उत्तर

12

यह कानूनी है। वे घोषित किए जाने पर वेरिएबल तुरंत दायरे में हैं। यह नियम एक पंक्ति में स्वयं-रेफरेंसियल डेटा-स्ट्रक्चर बनाने के लिए सक्षम है। सूचक एक गैर-निर्मित वस्तु को इंगित कर सकता है, जब तक कि उस वस्तु का निर्माण करने से पहले इसे संदर्भित नहीं किया जाता है।

के बाद से सूचक Server निर्माता में पारित किया जा रहा है, इस समारोह वस्तु कॉल करने से पहले काम करेंगे, जब तक कि Server सही ढंग से इंतजार कर रहा है।

+0

धन्यवाद मांकर्स। मैंने और सवाल जोड़ा। कृपया मेरी मदद करें –

संबंधित मुद्दे