2012-02-17 15 views
10

मैंने एक नियमित पाठ संपादक का उपयोग कर सी ++ प्रोजेक्ट पर काम किया है। बाद में, मैंने डिबगिंग को आसान बनाने के लिए सभी फ़ाइलों को एक्लिप्स में आयात किया।सदस्य घोषणा नहीं मिली

ग्रहण में एक अजीब बात होती है। यह शिकायत करता है कि "सदस्य घोषणा नहीं मिली" भले ही मैंने हेडर फ़ाइल शामिल की हो। हेडर फ़ाइल में फ़ंक्शन परिभाषा है।

मैं इस समस्या को कैसे ठीक करूं?

अग्रिम

+0

ग्रहण करता है कि हेडर फ़ाइल को कहां देखना है? यदि ऐसा होता है, तो हमें शायद कुछ और जानकारी – Neowizard

उत्तर

14

धन्यवाद "सदस्य घोषणा नहीं मिला" ग्रहण स्थिर विश्लेषण उपकरण (codan) द्वारा निर्मित एक त्रुटि है। अगर आपको यह त्रुटि मिलती है, लेकिन संकलन सफल होता है तो यह एक झूठी सकारात्मक है। इस उपकरण के पुराने संस्करण कुछ झूठी सकारात्मक देने के लिए जाने जाते हैं, उदाहरण के लिए this bug report देखें। तो मैं सबसे हालिया संस्करण में ग्रहण सीडीटी अद्यतन करने की सलाह देते हैं।

एक और चीज जो इस त्रुटि का कारण बन सकती है वह एक अनसुलझा है जिसमें ग्रहण आपके कोड के एक भाग को सही ढंग से पार्स करने से रोकता है। प्रोजेक्ट के संदर्भ मेनू में Index -> Search For Unresolved Includes का चयन करने से आपको अनसुलझा की सूची मिल जाएगी। इसे ठीक करने के विवरण के लिए this answer देखें।

यहाँ एक उदाहरण है:

class C { 
    void f(std::vector<int>&); 
}; 

void C::f(std::vector<int>&) {} // Member declaration not found 

ऊपर के उदाहरण का कारण बनता है "सदस्य घोषणा नहीं मिला" ग्रहण CDT में त्रुटि भले ही आप <vector> शामिल है, लेकिन अनसुलझे (गलत तरह से कॉन्फ़िगर की वजह से शामिल पथ) की है।

1

मैंने देखा कि "सदस्य घोषणा नहीं मिली" जब आप किसी ऐसे नाम के साथ कक्षा बनाते हैं जो पहले से उपयोग किया गया है या एक कीवर्ड है तो भी रिपोर्ट करेगा।

+1

की आवश्यकता होगी, यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। –

+2

मैं आपसे सहमत नहीं हूं। –

5

मैंने ग्रहण में कई बार इस समस्या का अनुभव किया हालांकि इमारत सफल रही है। हम प्रोजेक्ट मेनू में सी/सी ++ इंडेक्स का पुनर्निर्माण करके बस इस समस्या को हल कर सकते हैं। :)

0

मुझे यह संदेश बनाता है जो मेरी .cpp फ़ाइल में एक त्रुटि मिली है। मेरे पास फ़ाइल के सामने namespace std { था, और मैंने के लिए बंद } के बाद नए फ़ंक्शंस बनाए थे। फ़ाइल के अंत में } को बंद करना ताकि परिभाषित फाइलें namespace में त्रुटि संदेश को ठीक कर दें।

उदाहरण जो त्रुटि बनाता है।

#include "MyStrFuncs.h" 

**namespace** std { 

MyStrFuncs::MyStrFuncs() { 
    // TODO Auto-generated constructor stub 
} 

MyStrFuncs::~MyStrFuncs() { 
    // TODO Auto-generated destructor stub 
} 

} // This ends the **namespace** 

//Additional functions will now generate the member declaration not found error... 

int MyStrFuncs::str2i(string strIn) { 
    int results; 
    istringstream convert(strIn); 

    if(!(convert)>>results) results = 0; 

    return results; 
} 
// Fix by moving closing } for namespace to here. Good luck. 
0
भी CDT 9.2.1 और ग्रहण नियॉन 4.6.3 "सदस्य घोषणा नहीं मिला" समस्याओं रिपोर्ट कर रहे हैं के साथ

। जैसा कि श्रीजयंतन ने उत्तर दिया है, निम्नलिखित को हल करना चाहिए: प्रोजेक्ट> सी/सी ++ इंडेक्स> पुनर्निर्माण।

0

मैंने ग्रहण में स्रोत और हेडर फ़ाइलों को विभाजित करते समय भी इस समस्या का अनुभव किया। मैंने इसे मैन्युअल टाइपिंग और प्रोजेक्ट बनाने के बजाय "कार्यान्वयन विधियों" ग्रहण द्वारा हल किया। कार्यान्वयन विधियों "इनलाइन फ़ंक्शंस" को स्रोत फ़ाइल में जोड़ा जाएगा।

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