2012-04-20 16 views
7
#include <iostream> 
using namespace std; 

class A { 
    typedef int myInt; 
    int k; 
public: 
    A(int i) : k(i) {} 
    myInt getK(); 
}; 

myInt A::getK() { return k; } 

int main (int argc, char * const argv[]) { 
    A a(5); 
    cout << a.getK() << endl; 
    return 0; 
} 

मींट इस पंक्ति में एक 'int' के रूप में संकलक द्वारा मान्यता प्राप्त नहीं है:सी ++ टाइपपीफ और रिटर्न प्रकार: टाइपिफ़ के साथ बनाए गए रिटर्न प्रकार को पहचानने के लिए कंपाइलर कैसे प्राप्त करें?

myInt A::getK() { return k; } 

मैं संकलक पूर्णांक के रूप में मींट पहचान करने के लिए कैसे मिल सकता है?

उत्तर

19

typedef समानार्थी बनाता है, न कि नए प्रकार, इसलिए myInt और int पहले से ही वही हैं। समस्या दायरा है - वैश्विक दायरे में myInt नहीं है, आपको कक्षा के बाहर A::myInt का उपयोग करना होगा।

A::myInt A::getK() { return k; } 
+1

+1 हालांकि मैं * समानार्थी * के बजाय * उपनाम * का उपयोग कर सकता हूं * – AJG85

2

A::myInt A::getK() { return k; }

आप typedef प्रकार अर्हता प्राप्त करने के क्योंकि आप इसे वर्ग A दायरे के अंदर बनाई गई है।

-2

कक्षा के बाहर परिभाषा को रखो।

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