ठीक है, मैं सी ++ में नया हूं। मुझे बजेर्ने की किताब मिली, और मैं कैलकुलेटर कोड का पालन करने की कोशिश कर रहा हूं।सी ++ enum से
हालांकि, संकलक इस खंड के बारे में त्रुटि बाहर थूकना है:
:calc.cpp:42: error: invalid conversion from ‘char’ to ‘token_value’
token_value
एक enum कि जैसा दिखता है:
token_value get_token()
{
char ch;
do { // skip whitespace except '\n'
if(!std::cin.get(ch)) return curr_tok = END;
} while (ch!='\n' && isspace(ch));
switch (ch) {
case ';':
case '\n':
std::cin >> WS; // skip whitespace
return curr_tok=PRINT;
case '*':
case '/':
case '+':
case '-':
case '(':
case ')':
case '=':
return curr_tok=ch;
case '0': case '1': case '2': case '3': case '4': case '5':
case '6': case '7': case '8': case '9': case '.':
std::cin.putback(ch);
std::cin >> number_value;
return curr_tok=NUMBER;
default: // NAME, NAME=, or error
if (isalpha(ch)) {
char* p = name_string;
*p++ = ch;
while (std::cin.get(ch) && isalnum(ch)) *p++ = ch;
std::cin.putback(ch);
*p = 0;
return curr_tok=NAME;
}
error("bad token");
return curr_tok=PRINT;
}
त्रुटि इसे बाहर थूकना है यह है
enum token_value {
NAME, NUMBER, END,
PLUS='+', MINUS='-', MUL='*', DIV='/',
PRINT=';', ASSIGN='=', LP='(', RP=')'
};
token_value curr_tok;
मेरा सवाल है, मैं ch (cin से), संबंधित enum में कैसे परिवर्तित करूं मूल्य?
सी – ChrisW
के बजाय सी ++ का उपयोग करते समय नए स्टाइल कास्ट (यानी 'static_cast' इत्यादि) का उपयोग करना पसंद करें या यदि आप सी-स्टाइल कास्ट्स का उपयोग करना चाहते हैं, तो उन्हें कन्स्ट्रक्टर सिंटैक्स का उपयोग करके रडार के नीचे छीन लें: 'curr_tok = टोकन_वल्यू (सी) '। आपकी शैली मार्गदर्शिका के लेखक एकल-तर्क रचनाकारों पर प्रतिबंध लगाने से पहले दो बार सोच सकते हैं, भले ही उन्हें केवल सी-स्टाइल कास्ट का उपयोग करके बुलाया जा सके। ;-) –