2012-08-07 18 views
30

नाम नहीं है यह एक साधारण गलती हो सकती है जिसे मैं नहीं देख रहा हूं, लेकिन मुझे लगता है कि मैं बस कुछ गलत कर रहा हूं। चिंता मत करो मैं अपने शीर्षक में नाम स्थान एसटीडी का उपयोग नहीं कार्यों या जो कुछ भी इस व्यक्ति के मुद्दे [प्रश्न मैं मेरा के लिए इसी तरह पढ़ा] [1] [1] लग रहा था: Why am I getting string does not name a type Error?नेमस्पेस std में स्ट्रिंग का नाम

मैं 4 हो रही है त्रुटियों अभी:

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.h|8|error: 'string' in namespace 'std' does not name a type|

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.h|12|error: 'string' in namespace 'std' does not name a type|

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.h|13|error: 'string' in namespace 'std' does not name a type|

C:\Documents and Settings\Me\My Documents\C++Projects\C++\RandomSentence\Nouns.cpp|9|error: no 'std::string Nouns::nounGenerator()' member function declared in class 'Nouns'|

||=== Build finished: 4 errors, 0 warnings ===|

यहाँ मेरी हेडर फ़ाइल है:

class Nouns 
{ 
    public: 
     Nouns(); 
     std::string noun; 
    protected: 
    private: 
     int rnp; // random noun picker 
     std::string dog, cat, rat, coat, toilet, lizard, mime, clown, barbie, pig, lamp, chair, hanger, pancake, biscut, ferret, blanket, tree, door, radio; 
     std::string nounGenerator() 
}; 

और ये मेरे cpp फ़ाइल है:

#include "Nouns.h" 
#include <iostream> 

Nouns::Nouns() 
{ 

} 

std::string Nouns::nounGenerator(){ 
    RollRandom rollRandObj; 

    rnp = rollRandObj.randNum; 

    switch(rnp){ 
    case 1: 
     noun = "dog"; 
     break; 
    case 2: 
     noun = "cat"; 
     break; 
    case 3: 
     noun = "rat"; 
     break; 
    case 4: 
     noun = "coat"; 
     break; 
    case 5: 
     noun = "toilet"; 
     break; 
    case 6: 
     noun = "lizard"; 
     break; 
    case 7: 
     noun = "mime"; 
     break; 
    case 8: 
     noun = "clown"; 
     break; 
    case 9: 
     noun = "barbie"; 
     break; 
    case 10: 
     noun = "pig"; 
     break; 
    case 11: 
     noun = "lamp"; 
     break; 
    case 12: 
     noun = "chair"; 
     break; 
    case 13: 
     noun = "hanger"; 
     break; 
    case 14: 
     noun = "pancake"; 
     break; 
    case 15: 
     noun = "biscut"; 
     break; 
    case 16: 
     noun = "ferret"; 
     break; 
    case 17: 
     noun = "blanket"; 
     break; 
    case 18: 
     noun = "tree"; 
     break; 
    case 19: 
     noun = "door"; 
     break; 
    case 20: 
     noun = "radio"; 
     break; 
    } 

    return noun; 
} 
+1

जब कोई सरणी खूबसूरती से काम करेगी तो स्विच का उपयोग क्यों करें? – TheZ

+2

@TheZ: उन चीजों को शामिल न करें जिन्हें आप उपयोग करना चाहते हैं? मुझे संदेह है कि इन प्रश्नों का एक ही जवाब है ... – Sharkos

+0

स्विच वह है जो मुझे उपयोग करने के लिए उपयोग किया जाता है। व्यक्तिगत पसंद। और मेरे लिए यह साफ दिखता है। –

उत्तर

53

आप की जरूरत है

#include <string> 

<iostream> वाणी को cout, cin, नहीं string

+2

'' अप्रत्यक्ष रूप से अप्रत्यक्ष रूप से 'स्ट्रिंग' घोषित करता है (वैसे भी, अधिकांश संस्करणों में) लेकिन ध्यान दें कि इसमें शामिल है * * * Nouns.h' पहले ही संसाधित हो चुका है। यद्यपि यह सबसे अच्छा समाधान नहीं होगा, दोनों के क्रम को उलट करने में शायद समस्या भी ठीक हो जाएगी। बेशक, यह हर जगह फिर से आएगा 'Nouns.h' शामिल था, इसलिए उस फ़ाइल में' 'शामिल करना बेहतर है। –

+1

@ अर्नेस्टफ्राइडमैन-हिल मैंने स्ट्रिंग समेत आईस्ट्रीम कभी नहीं देखा है ... और nouns.h में स्ट्रिंग समेत, यहां सही दृष्टिकोण नहीं है, बाहर नहीं। –

+0

ओह ... मुझे लगता है कि मैंने गलत क्या पता लगाने की कोशिश कर कोड पर घूमने में कम से कम 30 मिनट बिताए। सरल चीजें आसानी से अनदेखी की जाती हैं। धन्यवाद ... –

6

Nouns.h में <string> शामिल नहीं है, लेकिन इसकी आवश्यकता है। आप अन्यथा संकलक पता नहीं है क्या std::string है जब यह पहली बार के लिए का सामना करना पड़ा है कि फ़ाइल के शीर्ष पर

#include <string> 

जोड़ने की जरूरत है।

#include <string> 

अपने हेडर फाइल में:

3

आप जोड़ने की जरूरत है।

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