2015-10-28 8 views
6

मैं एक enum (बुलाया दिशा) एक हेडर फाइल में घोषित: फिरएक हो रही त्रुटि "enum कक्षा या नाम स्थान नहीं है" - सी ++

enum Direction {LEFT, RIGHT}; 

, मैं एक निर्माता है कि एक दिशा मूल्य लेता है और निर्धारित किया है यह एक और दिशा चर (स्ट्रिंगडिरेक्शन) के लिए।

bool InformationWidget::move(Direction direction){ 
    stringDirection=direction; 

return true; 
} 

और अंत में, मैं एक अगर बयान है कि इसके बारे में मूल्य की जांच करे:

if (stringDirection == Direction::RIGHT) 

यह वह जगह है जहां मैं त्रुटि मिल रही है, पर यह है कि अगर बयान .. किसी भी विचार? मैंने पिछले धागे पर चारों ओर देखने की कोशिश की लेकिन कुछ भी उपयोगी नहीं मिला।

धन्यवाद!

संपादित करें:

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

Widget.h

enum class Direction {LEFT, RIGHT}; 

class Widget { 
public: 
    virtual bool... 
    ... 
}; 

information.h

class InformationWidget: public Widget { 
public: 
    ... 
    Direction stringDirection; 
    ... 
}; 

information.cpp

void InformationWidget::show(){ 

... 

if (stringDirection == LEFT) { 
... } 
} 

उत्तर

11

अपने enum enum class या enum struct के रूप में यदि आप एक दायरे वाला enum चाहते हैं, यानी घोषित प्रगणक की आवश्यकता के लिए Direction:: उपसर्ग होना करने के लिए:

enum class Direction {LEFT, RIGHT}; 

अन्यथा आप किसी पुराने सी-शैली enum चाहते तो आप छोड़ करने की जरूरत है नाम स्थान क्वालीफायर Direction:: कि त्रुटि संदेश के बारे में शिकायत की है:

if (stringDirection == RIGHT) 

सूचना है कि बाद के मामले में प्रगणक पहचानकर्ता ग्लोबल नेम स्पेस में रखा जाएगा, जो उन्हें अन्य संगठनों के साथ संघर्ष करने के लिए कारण हो सकता है एर पहचानकर्ताओं।

+0

आपके उत्तर के लिए धन्यवाद! मैं इन समाधानों से अवगत था लेकिन उनमें से दोनों काम नहीं करते हैं। जब मैं पहली बार कोशिश करता हूं ('कक्षा' जोड़ना) यह अभी भी मुझे एक ही त्रुटि देता है। जब मैं दूसरा प्रयास करता हूं, तो यह केवल कथन के दाहिने भाग के लिए एक त्रुटि देता है, कह रहा है कि "प्रतीक 'दाएं हल नहीं किया जा सका"। – Gambit2007

+0

फिर आप कहीं और कुछ गलत कर रहे हैं और एक [एमसीवीई] (http://stackoverflow.com/help/mcve) प्रदान करने की आवश्यकता है। – emlai

+0

मुझे सच में नहीं पता कि समस्या क्या है .. मैंने हेडर फ़ाइल में enum घोषित किया है, इसे एक .cpp फ़ाइल में शामिल किया है (जो पूरी तरह से सार आधार वर्ग से विधियों को लागू करता है) और यह अभी काम नहीं कर रहा है .. – Gambit2007

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