आप धोखाधड़ी की तरह महसूस करते हैं:
typedef int(*PtrToArray)[5];
PtrToArray function();
int i = function;
कि जीसीसी पैदावार पर संकलन: invalid conversion from 'int (*(*)())[5]' to 'int'
। पहला बिट वह प्रकार है जिसे आप ढूंढ रहे हैं।
बेशक
, एक बार आप अपने PtrToArray
typedef है, पूरी कवायद बल्कि अधिक तुच्छ हो जाता है, लेकिन कभी कभी इस काम में आता है, तो आप पहले से ही समारोह नाम है और आप बस इसे कहीं छड़ी की जरूरत है। और, किसी भी कारण से, आप अपने द्वारा गोरियों के विवरण छिपाने के लिए टेम्पलेट चालबाजी पर भरोसा नहीं कर सकते हैं।
अपने संकलक इसका समर्थन करता है, तो आप भी ऐसा कर सकते हैं: प्रकार पढ़ने में सक्षम होने के नाते
typedef int(*PtrToArray)[5];
PtrToArray function();
template<typename T> void print(T) {
cout << __PRETTY_FUNCTION__ << endl;
}
print(function);
कौन सा, मेरे कंप्यूटर बॉक्स पर, पैदा करता है void function(T) [with T = int (* (*)())[5]]
, सुंदर उपयोगी है संकलक त्रुटियों को समझने के बाद से अक्सर उन सभी कोष्ठक का अर्थ समझने की आपकी क्षमता पर निर्भर करता है। लेकिन उन्हें स्वयं बनाना कम उपयोगी है, आईएमओ।
स्रोत
2010-08-05 06:55:51
+1 प्रमुख शीर्षक के लिए जो मेरे दिमाग को चोट पहुंचाता है! (इसके अलावा नाम: पी) – Russell
शायद यह एक उत्तर बना सकता है, लेकिन घड़ी के सर्पिल नियम को याद रखें, यह दोनों तरीकों से काम करता है, बस दिशा के लिए समायोजित करें। – jer
बढ़ावा है :: फ़ंक्शन कुछ जिसे आप स्वीकार करेंगे? –