2010-09-01 17 views
5

मैं सवाल क्यों हम गुंजाइश संकल्प ऑपरेटर या this सूचक एक टेम्पलेट आधार वर्ग से सार्वजनिक रूप से विरासत में मिला सदस्यों का उपयोग करने की आवश्यकता है पर कुछ स्पष्टीकरण की आवश्यकता है। जैसा कि मैं समझता हूं कि यह स्पष्टता जोड़ने के लिए है, लेकिन फिर this कैसे इंगित करता है कि यह कक्षा का सदस्य है, इसकी तुलना में कोई और स्पष्टता जोड़ें।एक्सेस करना सार्वजनिक विरासत में मिला खाका डेटा सदस्यों

मेरा प्रश्न स्पष्ट करने के लिए मैंने कुछ कोड जोड़ा है।

#include <iostream> 
using namespace std; 

template <class T, class A> 
class mypair { 
     public: 
     T a, b; 
    public: 
    mypair (T first, T second) 
     {a=first; b=second;} 

     virtual void printA() 
     { 
     cout<<"A"<<a<<endl; 
     cout<<"B"<<b<<endl; 
     } 
}; 







template <class T, class A> 
class next: mypair<T,A> 
{ 
public: 

     next (T first, T second) : mypair<T,A>(first, second) 
     { 
     } 

     void printA() 
     { 
     cout<<"A:"<<mypair<T,A>::a<<endl; // this->a; also works 
     cout<<"B:"<<mypair<T,A>::b<<endl; // this-b; also works 
     } 

}; 


int main() { 
    next<double,float> newobject(100.25, 75.77); 
    newobject.printA(); 
    return 0; 
} 

आउटपुट:

A:100.25 
B:75.77 

तो मैं गुंजाइश (या इस ऑपरेटर) तो गुंजाइश त्रुटि से बाहर आता है हटा दें। लेकिन सार्वजनिक रूप से विरासत वाले सदस्यों के लिए हमें एक दायरे की आवश्यकता क्यों है।

इस पर कुछ विचार बहुत अच्छे होंगे।

उत्तर

4

स्पष्ट उपसर्ग mypair<T, A>, या this-> जोड़ कर Name lookup - Using the GNU Compiler Collection (GCC)

को देखें, तो आप printA टेम्पलेट तर्क निर्भर करते हैं। फिर परिभाषाओं को टेम्पलेट तत्काल चरण के दौरान हल किया जाएगा।

+0

दिलचस्प पढ़ें तो यह केवल टेम्पलेट के साथ एक विशेष मामला है? – Sii

+0

केवल टेम्पलेट वर्ग में कार्यों में। –

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