मैं निम्नलिखित कोड का टुकड़ा है:परीक्षण करता है, तो एक shared_ptr शून्य है
std::vector< boost::shared_ptr<Foo> >::iterator it;
it = returnsAnIterator();
// often, it will point to a shared_ptr that is NULL, and I want to test for that
if(*it)
{
// do stuff
}
else // do other stuff
मैं सही ढंग से परीक्षण हूँ? बढ़ावा डॉक्स का कहना है कि एक shared_ptr परोक्ष एक bool में बदला जा सकता है, लेकिन यह segfaults जब मैं इस कोड चलाएँ:
Program received signal SIGSEGV, Segmentation fault.
0x0806c252 in boost::shared_ptr<Foo>::operator Foo*
boost::shared_ptr<Foo>::* (this=0x0)
at /usr/local/bin/boost_1_43_0/boost/smart_ptr/detail/operator_bool.hpp:47
47 return px == 0? 0: &this_type::px;
इटेटरेटर 'vector.begin()' है, इसलिए स्पष्ट रूप से मैं गलत चीज़ का परीक्षण कर रहा था। आपकी सहायता के लिए धन्यवाद. – Max