c++ - सदस्य के लिए अनुरोध जो गैर-वर्ग प्रकार का है




reference undefined (2)

यह नहीं

Keyword aux();
aux.put_tag(word);
aux.put_site(site);

लेकिन यह

Keyword aux;
aux.put_tag(word);
aux.put_site(site);

आपके संस्करण में Keyword aux(); एक फ़ंक्शन प्रोटोटाइप है जो कि कोई चर घोषणा नहीं है।

मुझे यह त्रुटि मिली और मैं खुद से हल नहीं कर पा रहा हूं

source.cpp:85:8: error: request for member put_tag in aux’, which is of non-class type Keyword()’
source.cpp:86:8: error: request for member put_site in aux’, which is of non-class type Keyword()’
make: *** [source.o] Error 1

जो कोड मुझे यह त्रुटि देता है I

Keyword aux();
aux.put_tag(word);
aux.put_site(site);

मुझे यह जिक्र करना चाहिए कि शब्द और साइट char * प्रकार हैं

अब, मेरी कीवर्ड श्रेणी परिभाषा यह है:

class Keyword{
 private:

std::string tag; 
Stack<std::string> weblist;

public:

    Keyword();
    ~Keyword();
    void put_tag(std::string word)
    {
        tag = word;
    }
    void put_site(std::string site)
    {
        weblist.push(site);
    }

};

आपका बहुत बहुत धन्यवाद!

अद्यतन करें

संशोधित करके

Keyword aux();
aux.put_tag(word);
aux.put_site(site);

में

Keyword aux;
aux.put_tag(word);
aux.put_site(site);

मुझे यह त्रुटि मिली:

source.o: In function `Algorithm::indexSite(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
source.cpp:(.text+0x2c6): undefined reference to `Keyword::Keyword()'
source.cpp:(.text+0x369): undefined reference to `Keyword::~Keyword()'
source.cpp:(.text+0x4a8): undefined reference to `Keyword::~Keyword()'
source.o: In function `Keyword::put_site(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
source.cpp:(.text._ZN7Keyword8put_siteESs[Keyword::put_site(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)]+0x2a): undefined reference to `Stack<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::push(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
collect2: ld returned 1 exit status
make: *** [tema3] Error 1

यह पंक्ति आपके विचार में नहीं करती:

Keyword aux();

एक समारोह को घोषित कर रहा है जिसे aux कहा जाता है जो कोई तर्क नहीं लेता है और एक Keyword देता है। आप सबसे अधिक संभावना लिखना (कोष्ठकों के बिना):

Keyword aux;

कौन सा प्रकार की Keyword एक वस्तु को घोषित करता है।

अद्यतन करें:

आप जिस अगली त्रुटि को प्राप्त कर रहे हैं उसके बारे में, यह इसलिए है क्योंकि आपके पास कंसल्टेंट और आपके क्लास के डिस्ट्रिक्टर की घोषणा है, लेकिन कोई परिभाषा नहीं है वास्तव में, आपको जो त्रुटि मिल रही है वह लिंकर से आता है, और कंपाइलर से नहीं।

अपने कन्स्ट्रक्टर और डिस्ट्रिक्टर की तुच्छ परिभाषा प्रदान करने के लिए, इसे बदलें:

Keyword();
~Keyword();

इस मामले में:

Keyword() { }
~Keyword() { }

या, जब तक यह सदस्य कार्य नहीं करता, तब तक उन्हें बिल्कुल न छोड़ें- कम्पाइलर आपके लिए उन्हें उत्पन्न करेगा (जब तक कि आप कन्स्ट्रक्टर से संबंधित किसी अन्य उपयोगकर्ता-घोषित कन्स्ट्रक्टर को जोड़ने न दें)।





undefined