मैं इस वर्गअजीब व्यवहार 2010
#include <memory>
class ContainerUnique
{
public:
ContainerUnique(void);
~ContainerUnique(void);
private:
std::unique_ptr<UniqueElement> u;
};
कहाँ UniqueElement एक पॉड वर्ग कहीं परिभाषित किया गया है लेखन की कोशिश की। अब मैं इस तरह के कन्स्ट्रक्टर बॉडी को परिभाषित करता हूं:
ContainerUnique::ContainerUnique(void)
{
auto tmp = new UniqueElement(1);
this->u(tmp); // u is a unique_ptr<UniqueElement>. Should this call compile?
}
और यह अपवादों का अनुपालन करता है। प्रोग्राम चलाते हुए मुझे लगता है कि ContainerUnique
के निर्माता के बाद, u
में एक शून्य सूचक शामिल है।
क्या यह इरादा व्यवहार है? और मैं वास्तव में क्या अनन्य_पीटीआर विधि बुला रहा हूँ?
आपके सामने आने वाली समस्याओं के बारे में निश्चित नहीं है। लेकिन कन्स्ट्रक्टर की प्रारंभिक सूची में सदस्य चर को प्रारंभ करके उनसे बचें। –
हां, यही वह समाधान है जिसका मैंने अपने वास्तविक कोड में उपयोग किया था, लेकिन मुझे अभी भी इस बारे में निश्चित नहीं है कि उदाहरण में क्या हो रहा है। –
अपने ऑटो चर के प्रकार को प्रिंट करने का प्रयास करें। निश्चित नहीं है कि टाइपिड काम करता है। एक बार जब आप इस प्रकार को जानते हैं तो बाकी आसान होना चाहिए। –