इस सी ++ 1 वर्ष कोड (LIVE EXAMPLE) पर विचार करें:मैं एक फ़ंक्शन कैसे घोषित करूं जिसका रिटर्न प्रकार घटाया जाता है?
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
संकलक (जीसीसी 4.8.1) उदारता से इस त्रुटि को बाहर गोली मारता है:
main.cpp: In function ‘int main()’:
main.cpp:8:18: error: use of ‘auto foo()’ before deduction of ‘auto’
std::cout << foo();
^
कैसे मैं आगे-घोषित foo()
यहाँ? या शायद अधिक उचित, foo()
को आगे घोषित करना संभव है?
मैं भी कोड है, जहां मैं .h
फ़ाइल में foo()
घोषित करने की कोशिश संकलन की कोशिश की है, foo()
परिभाषित सिर्फ एक .cpp
फ़ाइल में ऊपर की तरह, मेरे main.cpp
फ़ाइल में .h
int main()
युक्त और कॉल शामिल foo()
पर, और उन्हें बनाया गया।
वही त्रुटि हुई।
क्या आप वाकई वाकई इसकी ज़रूरत है? मुझे नहीं लगता कि यह आमतौर पर ऐसे कार्यों को बनाने का एक अच्छा विचार है जो कुछ अपरिभाषित लौटाते हैं, शायद आपको कुछ अमूर्त उच्च स्तरीय वर्ग के उदाहरण को वापस करने की आवश्यकता है? अगर आप जानते हैं कि आप क्या कर रहे हैं तो कोई अपराध नहीं :) – SpongeBobFan