2012-02-20 10 views
21

मुझे C++ 11 कोड संकलित करने के लिए g ++ नहीं मिल रहा है जो एक चालक कन्स्ट्रक्टर का उपयोग करता है।मैं एक चालक कन्स्ट्रक्टर के साथ C++ 11 कोड संकलित करने के लिए g ++ कैसे प्राप्त करूं?

[email protected]:~/Projects/arraylib$ g++ ./t2.cpp 
./t2.cpp:10:27: error: expected ‘,’ or ‘...’ before ‘&&’ token 
./t2.cpp:10:38: error: invalid constructor; you probably meant ‘Blarg (const Blarg&)’ 

कार्यक्रम मैं लिख रहा हूँ इस से काफी अलग है ट्रिगर त्रुटि, लेकिन मैं इसे हिस्सा लगता है कि जैसे कि यह निश्चित रूप से काम करना चाहिए, अभी तक अभी भी के लिए कांट छांट:

#include <iostream> 

using namespace std; 

class Blarg { 
    public: 
     Blarg() {}; 
     Blarg (const Blarg& original) {}; /* Copy constructor */ 
     Blarg (Blarg&& original) {}; /* Move constructor */ 
}; 

int main(int argc, char *argv[]) 
{ 
    Blarg b; 
    return 0; 
} 
मैं इस त्रुटि प्राप्त हो रही

क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं? इसके बजाय, इसे कैसे ठीक करें?

यह मेरा जीसीसी संस्करण है:

gcc (Ubuntu/Linaro 4.6.2-14ubuntu2) 4.6.2 
+2

ध्यान दें कि एक चालक कन्स्ट्रक्टर के लिए एक कॉन्स्ट संदर्भ पास करना बहुत बेकार है; यथार्थ रूप से यह 'ब्लैग (ब्लैग एंड एंड मूल) होना चाहिए। – ildjarn

+0

हाँ, धन्यवाद। मैंने इसे अपने वास्तविक कोड में तय कर लिया है। मैं इसे ऊपर भी ठीक कर दूंगा। – Collin

उत्तर

39

कहो g++ -std=c++0x ./t2.cpp

आप ऐसा कर रहे हैं, फिर भी अच्छी तरह से इसे सही करने के लिए और सक्षम हो सकता है सभी चेतावनियों:

g++ -W -Wall -Wextra -pedantic -std=c++0x -o t2 t2.cpp 

आप वास्तव में वास्तव में किसी भी कम, विशेष रूप से आप जा रहे हैं के साथ संकलन नहीं किया जाना चाहिए SO :-) पर अपने कोड के बारे में प्रश्न पूछने के लिए विभिन्न अनुकूलन झंडे को रिलीज़ संस्करण के लिए वैकल्पिक रूप से माना जाना चाहिए, जैसे कि -s -O2 -flto -march=native

+2

"डू इट राइट", जबकि मैन पेज-std = C++ 0x कहता है "यह विकल्प प्रायोगिक विशेषताओं को सक्षम करता है जिसे भविष्य में हटाया जा सकता है" वे निश्चित रूप से उन मैनपेजों में रक्षात्मक हैं :-) –

+0

मुझे बचाने के लिए बहुत बहुत धन्यवाद 600+ पेज मैनुअल के माध्यम से फ़िल्टर करने से ... मैं बस दोबारा जांच करूंगा कि यह जिस तरह से मेरा इरादा रखता है और फिर इसे उत्तर के रूप में चिह्नित करता है। – Collin

+2

@ कैप्टन जीराफ: सुनिश्चित करने के लिए, बोली विकल्प "इसे सही करने" के तहत कम नहीं किया गया है। उस ने कहा, 'C++ 0x' कुछ समय के लिए समर्थित होगा, लेकिन 4.7 से आगे आप' C++ 11' भी कह सकते हैं। –

14

आप शायद अपनी कमांडलाइन में -std=c++0x जोड़ना भूल गए हैं।

+0

खराब चीज, वही उत्तर समय उतना ही अच्छा प्रासंगिक उत्तर के साथ, लेकिन कई वोट नहीं। मुझे लगता है कि आपका एक संक्षिप्त संक्षिप्त उत्तर है! –

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