निम्न कोड Visual C++ 2008 के लिए ठीक काम करता है। हालांकि, जब Visual C++ 6 के लिए आता है, तो मुझे निम्न त्रुटि मिलती है। मुझे पता है क्यों, और मैं त्रुटि को कैसे ठीक कर सकता हूं, लेकिन अभी भी विनाशक निजी में बना रहता है।क्यों विज़ुअल सी ++ 6 निजी विनाशक पर शिकायत करता है
class X
{
public:
static X& instance()
{
static X database;
return database;
}
private:
X() {} // Private constructor
~X() {} // Private destructor
X(const X&); // Prevent copy-construction
X& operator=(const X&); // Prevent assignment
};
int main()
{
X::instance();
}
C: \ परियोजनाओं \ ttt6 \ main.cpp (178): त्रुटि C2248: 'एक्स :: ~ एक्स': निजी सदस्य 'एक्स' कक्षा में सी घोषित उपयोग नहीं कर सकते: \ परियोजनाओं \ ttt6 \ main.cpp (175): देखने की घोषणा 'एक्स :: ~ एक्स'
क्या रचनाकार/विनाशक हमेशा सार्वजनिक नहीं होना चाहिए? – vpram86
@ एविएटर: रचनाकार हमेशा सार्वजनिक नहीं होना चाहिए। उदाहरण: एक अमूर्त वर्ग के लिए, आप केवल कन्स्ट्रक्टर को कॉल करने वाले व्युत्पन्न कक्षाएं चाहते हैं (इस प्रकार आप अमूर्त वर्ग के तत्कालता को रोक सकते हैं), ताकि आप इसे 'संरक्षित' बना सकें। सिंगलेट्स के लिए आप केवल उदाहरण के लिए क्लास की स्थिर 'CreateInstance()' विधि चाहते हैं, ताकि आप कन्स्ट्रक्टर 'निजी' बना सकें। –
@ स्कॉट: बहुत बहुत धन्यवाद। मैं इसे अब समझता हूँ। – vpram86