9
दोनों स्केलर और सरणी का उपयोग स्मार्ट पॉइंटर में स्केलर और सरणी दोनों का उपयोग कैसे कर सकता हूं?स्मार्ट पॉइंटर
नए और हटाने के सूचक का उपयोग करने का पुराना तरीका:
std::unique_ptr<int> p1(new int);
std::unique_ptr<int[]> p2(new int[10]);
मैं कैसे करने के लिए कम कर सकते हैं:
int *p;
if (useScalar) {
p = new int;
} else {
p = new int[10];
}
if (useScalar) {
delete p;
} else {
delete[] p;
}
स्मार्ट सूचक में, मैं प्रत्येक अदिश और सरणी सूचक के लिए 2 संकेत का उपयोग करना केवल 1 स्मार्ट सूचक का उपयोग करें?
आप अपनी खुद की स्मार्ट सूचक जो कि क्या 'delete' उपयोग करने के लिए या' हटाना [] 'निर्धारित करने के लिए एक 'bool useScalar' संग्रहीत करता है लिख सकते हैं। – jotik
क्या आप 'p = new int [1]' आवंटित कर सकते हैं और नाटक कर सकते हैं कि यह स्केलर के लिए सूचक है? – dasblinkenlight
आप 'int [1] 'स्केलर के रूप में उपयोग कर सकते हैं, शायद यह आपके प्रोग्राम के अन्य क्षेत्रों को भी सरल बनाता है ... – alain