2012-03-19 24 views
18

मुझे लगता है कि यह शर्मनाक है अगर मैंने आपको बताया कि मैं संकलन करने के लिए इसे प्राप्त नहीं कर सकता। आप कृपया मुझे मदद मिलेगी:unique_ptr संकलन त्रुटि

#include<memory> 
using namespace std; 

int main() 
{ 
    std::unique_ptr<int> p1(new int(5)); 
    return 0; 
} 
$ gcc main.cpp 
main.cpp: In function ‘int main()’: 
main.cpp:6:2: error: ‘unique_ptr’ was not declared in this scope 
main.cpp:6:13: error: expected primary-expression before ‘int’ 
main.cpp:6:13: error: expected ‘;’ before ‘int’ 

$ gcc --version 
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1 
+2

'gcc' लगभग कुछ विकल्प गुजर बिना इस्तेमाल कभी नहीं किया है। कम से कम 'g ++ -std = C++ 0x -pedantic main.cpp' आज़माएं। –

+5

यदि आप नेमस्पेस std का उपयोग कर रहे हैं तो आप std :: का उपयोग क्यों करते हैं; वैसे भी? – Azrael3000

+0

धन्यवाद। इसने काम कर दिया। 1- आप उत्तर क्यों नहीं पोस्ट करते हैं ताकि मैं इसे सत्य के रूप में चिह्नित कर सकूं। 2-जब आप इस पर हैं, तो क्या आप कृपया मुझे एक छोटा कारण दें कि जीसीसी का कभी भी उपयोग क्यों नहीं किया जाता है (और इसके बजाए जी ++ इस्तेमाल किया जाता है) या शायद किसी संदर्भ से लिंक किया गया है? धन्यवाद – rahman

उत्तर

31

यह सिर्फ एक अनुमान है।

सबसे अधिक संभावना आप (या समान) इस तरह अपने कार्यक्रम संकलित:

g++ main.cpp 

तुमने किया है, तो समस्या यह है कि जी ++ सी ++ डिफ़ॉल्ट के रूप में 03 का उपयोग करता है।

g++ -std=c++11 

या

g++ -std=c++14 

और मैं सिफारिश करेंगे भी उपयोग करने के लिए -Wall -Wextra -pedantic: C++ 11 विशेषताएं (और std::unique_ptr) का उपयोग करने के लिए आपको ग की ++ नए संस्करण का उपयोग करने की आवश्यकता है।

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है, लेकिन '-std = C++ 11' ध्वज सक्षम है और सभी आवश्यक शीर्षलेख शामिल हैं। क्या गलत नहीं हो सकता है: https://gist.github.com/canadien91/2ba3f9576823159c2d52 – Montreal

+0

भविष्य के संदर्भ के लिए: @Montreal # शामिल Stuck

+0

@ स्टक, हम्म, मेरी जिस्ट में शामिल है। लेकिन अब मुझे याद नहीं है जब मैंने इसे जोड़ा है। – Montreal

3

आप कोड का उपयोग कर रहे हैं, तो :: ब्लाकों, सेटिंग> संकलक> वैश्विक संकलक सेटिंग्स> संकलक सेटिंग्स के पास जाकर Have जी ++ का पालन सी ++ 11 आईएसओ सी ++ भाषा मानक [-std=c++11] के लिए देखो और इसे जांचें!

(कोड :: ब्लाकों जब संकलन आप के लिए -std=c++11 जोड़ देगा)

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