Crazy C++ Vector iterator -
मैं घोषणा करता हूं:
typedef std :: tr1 :: shared_ptr & lt; वर्ग ए & gt; SharedPtr;
और फिर:
<पूर्व> std :: vector & lt; SharedPtr & gt; Mlist;
और:
टाइपिंगफ़ास्ट std :: vector & lt; SharedPtr & gt; :: इटरेटर लिस्टइटरेटर;
mList.size ()
की वापसी 0 है, लेकिन जब मैं इटेरेटर का उपयोग करता हूँ, तो यह वेक्टर पर चलता है जो खाली है! यह मैं कैसे इटरेटर का उपयोग करता हूं:
के लिए (ListIterator = mList.begin (); it! = MList.end (); यह ++) (* यह) - & gt; कुछ विधि () ;
यह " someMethod ()
" निष्पादित करता है और फिर सेगमेंटेशन फॉल्ट फेंकता है कैसे एक खाली सदिश में चलती है Iterator ????
अधिक जानकारी
मैं जीटीके का उपयोग कर रहा हूं, इसलिए मैं मुख्य ऑब्जेक्ट को कैसे पास करता हूँ:
g_signal_connect (G_OBJECT (विजेट), "ईवेंट", G_CALLBACK (और क्लासबी :: मज़ेदार), यह
यह
क्लासबी ही है ।
और फिर मैं इसे इसे इस तरह से प्राप्त करता हूं:
gboolean ClassB :: fun (GtkWidget * विजेट, GdkEvent * event, Classb * डेटा) {// mList यहां है, और इस तरह से पहुंचा है: // डेटा- & gt; mList}
mList
को मैंने उद्धृत घोषित किया है, जब मैं अन्य विशेषता का उपयोग करता हूं, मान लें कि data-> xxx
यह काम करता है और यह ठीक है, समस्या केवल mList
के साथ होती है और यह विशेषता गतिशील रूप से आवंटित नहीं की जाती है।
मैंने * डेटा
और यह
के स्मृति पते की जांच की है, वे एक ही पते हैं।
मैंने समस्या का समाधान किया है, ओबजेक टी वर्ग बी को कुछ गुंजाइश के बाद नष्ट किया जा रहा था। वैसे भी, धन्यवाद लोग!
Comments
Post a Comment