2017-01-11 11 views
7

निम्न उदाहरण में:रिटर्निंग सदस्य वर्ग ++

class A 
{ 
public: 
    class B 
    { 
     ... 
    } 
    B Method(B argument); 
} 

A::B A::Method(B argument); 

वास्तव में वापसी प्रकार के लिए आवश्यक गुंजाइश है क्यों है, जबकि नहीं तर्क प्रकार के लिए?

उत्तर

8

[basic.lookup.qual]/3 के अनुसार,

एक घोषणा, जिसमें declarator-आईडी एक योग्य-आईडी है में, नाम योग्य-आईडी से पहले इस्तेमाल घोषित किया जा रहा है परिभाषित नामस्थान स्कोप में देखा गया है; योग्य-आईडी के बाद के नाम सदस्य के वर्ग या नामस्थान के दायरे में देखे जाते हैं।

वापसी प्रकार आता है से पहले योग्य-आईडी घोषित किया जा रहा है (अर्थात, A::Method है) जबकि पैरामीटर प्रकार यह के बाद आता है, तो पैरामीटर प्रकार का नाम स्वचालित रूप से, A के दायरे में ऊपर देखा जाता है, जबकि वापसी का नाम नहीं है। हम पिछली वापसी प्रकार का उपयोग करके अतिरिक्त योग्यता से बच सकते हैं।

auto A::Method(B argument) -> B; 
+3

क्या मैं अकेला लड़का हूं जिसे इसे प्राप्त करने के लिए धीरे-धीरे मानक बोली 10 बार पढ़ना पड़ा? – user

+0

@user मुझे एहसास है कि अगर आप शब्दावली से परिचित नहीं हैं तो इसे पढ़ने में इतना आसान नहीं है। यही कारण है कि मैंने नीचे भी समझाया। – Brian

+3

हां आपने निश्चित रूप से मुझे एक अतिरिक्त 20 पढ़ा बचाया है – user

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