मैं एक संरचना है:कास्टिंग shared_ptr <T> shared_ptr को <void>
struct Params {
std::shared_ptr<void> user_data;
/* ... */
};
मैं इस तरह उपयोग करना चाहते हैं:
int main() {
std::shared_ptr<SpecializedParams> sp(new SpecializedParams(100));
Params params;
/* ... */
params.user_data = std::static_pointer_cast<void>(sp);
/* ... */
std::shared_ptr<SpecializedParams> sp2 =
std::static_pointer_cast<SpecializedParams>(
params.user_data
);
/* ... */
return 0;
}
इस वैध और सुरक्षित है?
मुख्य ब्लॉक में पैराम क्या है? –
आप एक शून्य सूचक 'हटा नहीं सकते हैं, इसलिए आपका कोड संकलित भी नहीं होना चाहिए। –
@KerrekSB साझा पॉइंटर्स शून्य से निश्चित रूप से मान्य हैं। अधिक जानकारी के लिए यहां देखें: http://stackoverflow.com/questions/5913396/why-do-stdshared-ptrvoid-work –