2012-10-31 28 views
6

में तत्वों पर विधियों का विश्लेषण नहीं कर सकता है। मैं कस्टम सीफाइल के साथ अपने सी ++ प्रोजेक्ट को विकसित करने के लिए सीडीटी के साथ एक्लिप्स जूनो का उपयोग कर रहा हूं। मैं सी ++ 11 फीचर्स का भी उपयोग कर रहा हूं, जिसे मुझे एसओ पर सलाह के बाद एक्लिप्स के पार्सर के साथ काम करना है।ग्रहण सीडीटी एसटीएल कंटेनर

समस्या यह है कि ग्रहण एसटीएल कंटेनर तत्वों पर उपयोग की जाने वाली विधियों या फ़ील्ड को पार्स करने में असमर्थ है। उदाहरण के लिए:

mainapp.h

typedef struct _PlayerCalibrationData { 
    [...] 
    std::string getSamplesStr() 
    { 
      [...] 
    } 
} PlayerCalibrationData; 

std::vector<MainApp::PlayerCalibrationData> m_calibrationData; 

mainapp.cpp

m_calibrationData[0].getSamplesStr(); 

getSamplesStr() को रेखांकित किया और चिह्नित किया जाएगा एक त्रुटि के रूप में, संदेश "विधि 'getSamplesStr' के साथ नहीं कर सका हल हो गया"।

संकलक शिकायत नहीं करता है, भले ही मैं इसे ग्रहण से या कमांड लाइन से आमंत्रित करता हूं।

इसके अलावा, जब मैं m_calibrationData. टाइप करें, सभी वेक्टर तरीकों ऊपर सामग्री के माध्यम से पॉप सहायता (यानी यह ग्रहण वेक्टर नहीं मिल का मुद्दा शामिल नहीं है), लेकिन जैसे ही मैं [] या at() के माध्यम से एक तत्व का उपयोग के रूप में, सामग्री की सहायता है चुप और मैन्युअल रूप से टाइप किया गया कुछ भी एक त्रुटि के रूप में चिह्नित किया जाता है।

क्या यह सामान्य है कि यह काम नहीं करता है? यदि हां, तो क्या कोई तरीका है कि मैं विशेष रूप से टेम्पलेट-आधारित कंटेनर के लिए सहायता/सुधार बंद कर सकता हूं?

संपादित

मैं अब भी अक्षम करने C++ 11 समर्थन करने की कोशिश की है, और अगर मुझे लगता है कि समस्या गायब हो जाता है है - लेकिन फिर निश्चित रूप से C++ 11 प्रकार के और वाक्य रचना मान्यता प्राप्त नहीं हैं।

संपादित 2

मैं एक दूसरी परियोजना आयातित, ठीक उसी सेटिंग्स में प्रवेश किया, और इस परियोजना के लिए पार्स काम करता है। एकमात्र अंतर परियोजना लेआउट (मेकफ़ाइल के विभिन्न स्थान) है। लेकिन अगर मैं पहली परियोजना को हटा और पुनः आयात करता हूं, तो भी यह काम नहीं करता है।

+1

पर mingwbuilds प्रोजेक्ट से समस्या [this] (https://bugs.kde.org/show_bug.cgi?id=299124) जैसी समस्या है, हालांकि यह ग्रहण के लिए नहीं है। मैं सीडीटी –

+1

के लिए एक बग पोस्ट करूंगा जैसे लगता है कि सीडीटी 'std :: vector' के लिए' ऑपरेटर [] 'के वापसी मूल्य को सही ढंग से पार्स नहीं कर रहा है। क्या आपको 'foo.push_back (m_calibrationData [0]) 'जैसे बयान के लिए" अमान्य तर्क "जैसी त्रुटियां भी मिलती हैं? [यह बग] देखें (https://bugs.eclipse.org/bugs/show_bug.cgi?id=349849) –

उत्तर

5
इस

मेरे लिए काम किया:

"अपनी परियोजना का नाम" -> राइट क्लिक करें -> गुण:

C/C++ जनरल -> प्रीप्रोसेसर शामिल पथ, मैक्रो आदि-> नामित टैब पर स्विच "प्रदाता":

  • "विन्यास" "रिलीज़" ("डिबग" और बाद में) का चयन

  • स्विच बंद सभी प्रदाताओं और बस "CDT जीसीसी निर्मित के लिए

    संकलक सेटिंग्स परियोजनाओं के बीच "

  • अचिह्नित" शेयर सेटिंग प्रविष्टियों (वैश्विक प्रदाता) कमांड "

  • में

    " में संकलक चश्मा पाने के लिए: "जोड़ें" -std = C++ 11 "उद्धरण चिह्नों के बिना (उद्धरण के साथ भी काम कर सकते हैं)

  • हिट लागू करते हैं और

  • विकल्प बंद करते हैं, सूचकांक

यह दोनों mashines पर मेरे लिए काम करता पुनर्निर्माण घर पर और काम Win7 x64, CDT mingw-w64 gcc 4.7.2 साथ ताजा सरकारी ग्रहण पर Sourceforge

+0

अच्छा लगता है लेकिन मेरे लिए काम नहीं करता है। मैंने सभी बिल्डरों को पहले एक अनंत पुनर्निर्माण पाश समस्या को हल करने के लिए अक्षम कर दिया था। – Eric

+0

उग, अब ठीक है, तो इस जवाब में कुछ सब कुछ है =) – Eric