2015-08-08 13 views
8

मानक कहता है, "क्लास टी का एक सदस्य टी का उपयोग अपने नाम के रूप में नहीं कर सकता अगर सदस्य एक स्थिर डेटा सदस्य, सदस्य कार्य, सदस्य प्रकार, सदस्य टेम्पलेट, एक गणक एक अज्ञात गणना के सदस्य, सदस्य अज्ञात संघ का सदस्य। हालांकि, एक गैर स्थैतिक डेटा सदस्य तब तक टी का उपयोग कर सकता है जब तक कोई उपयोगकर्ता द्वारा घोषित कन्स्ट्रक्टर नहीं होते। "कक्षा के नाम के साथ डेटा सदस्य

हालांकि अगर मैं इस वर्ग को बनाता हूं, तो यह एक संकलन त्रुटि देता है।

class G 
{ 
    int G; 
}; 

मैं वीएस2013 का उपयोग कर रहा हूं। क्या माइक्रोसॉफ्ट में इसकी अनुमति नहीं है या?

+3

संकलन त्रुटि क्या है? यह क्लैंग और जीसीसी के साथ काम कर रहा है। – Hamdor

+10

माइक्रोसॉफ्ट कंपाइलर्स (इन) किसी भी प्रकार के मानक के अनुरूप होने में विफल होने के लिए प्रसिद्ध हैं। –

+0

त्रुटि: सी 2380: 'जी' (रिटर्न प्रकार के साथ कन्स्ट्रक्टर, या वर्तमान क्लास-नाम की अवैध पुनर्वितरण) के प्रकार (0) तो, वे इसे अनुमति नहीं देते :( –

उत्तर

3

यदि वीसी ++ इसकी अनुमति नहीं देता है, तो यह एक बग है।

हालांकि, यह भाषा "सुविधा" सी संगतता के उद्देश्य के लिए है, और माइक्रोसॉफ्ट ने सी पर जोर देने का फैसला नहीं किया है उदाहरण के लिए, सी 99+ सी ++ द्वारा अपनाए जाने तक नियम के रूप में अनुपलब्ध हैं। आपको कभी भी ऐसे सदस्य को जानबूझकर सी ++ में घोषित नहीं करना चाहिए।

(यह बस डिफ़ॉल्ट रूप से सी में अनुमत है: वहाँ के सदस्यों के नामकरण पर कोई प्रतिबंध नहीं कर रहे हैं, और सभी सदस्य nonstatic डेटा सदस्य हैं।)

संबंधित मुद्दे