2008-09-19 11 views
6

कृपया मेरे साथ भालू, मैं बस सी ++ सीख रहा हूं।जीसीसी - "अपेक्षित अयोग्य-आईडी पहले ')' टोकन"

मैं अपनी हेडर फ़ाइल (कक्षा के लिए) लिखने की कोशिश कर रहा हूं और मैं एक अजीब त्रुटि में चल रहा हूं।

cards.h:21: error: expected unqualified-id before ')' token 
cards.h:22: error: expected `)' before "str" 
cards.h:23: error: expected `)' before "r" 

"अपेक्षित अयोग्यता आईडी पहले") 'टोकन "का क्या अर्थ है? और मैं क्या गलत कर रहा हूँ?

संपादित करें: क्षमा करें, मैंने पूरा कोड पोस्ट नहीं किया है।

/* 
Card header file 
[Author] 
*/ 
// NOTE: Lanugage Docs here http://www.cplusplus.com/doc/tutorial/ 

#define Card 
#define Hand 
#define AppError 

#include <string> 

using namespace std; 


// TODO: Docs here 
class Card { // line 17 
    public: 
     enum Suit {Club, Diamond, Spade, Heart}; 
     enum Rank {Two, Three, Four, Five, Six, Seven, Eight, Nine, 
        Ten, Jack, Queen, King, Ace}; 
     Card(); // line 22 
     Card(string str); 
     Card(Rank r, Suit s); 

संपादित करें: मैं बस "g ++ file.h" का उपयोग कर हेडर फ़ाइल को संकलित करने का प्रयास कर रहा हूं।

संपादित करें: बंद प्रश्न। मेरा कोड अब काम कर रहा है। सबको धन्यवाद! संपादित करें: पढ़ने के बाद पुनः खोला गया प्रश्न Etiquette: Closing your posts

+0

क्षमा करें, मैं अपने प्रोफेसर के कोड की प्रतिलिपि बनाने के बजाय # परिभाषित करूंगा। – epochwolf

उत्तर

11

आपकी समस्या आपका #define है। आपने #define Card किया था, इसलिए अब हर जगह Card को टोकन के रूप में देखा जाता है, इसे प्रतिस्थापित किया जाएगा।

आमतौर पर कोई अतिरिक्त टोकन के साथ, #define Token Replace में 1 मान का उपयोग करेगा।

#define Card निकालें, यह लाइन 22 पढ़ने बना रहा है: 1(); या ();, जो शिकायत खड़ी कर रहा है।

+0

व्याख्या के लिए धन्यवाद। यह अब समझ में आता है। मुझे लगता है कि मैं अपनी पुस्तक में कुछ पढ़ूंगा। प्रतीत होता है कि प्रोफेसर विवरण छोड़ रहा है। – epochwolf

0

#define कार्ड निकालें।

+0

क्षमा करें, मैंने पूरी फ़ाइल नहीं दिखाई। सवाल संपादित किया गया है। – epochwolf

4

(अद्यतन सवाल के लिए संपादित)

#define बयान निकालें, वे फ़ाइल mangling रहे हैं। क्या आप एक गार्ड शामिल करने की कोशिश कर रहे थे?

#ifndef CARD_H 
#define CARD_H 

class Card ... 
... 

#endif 

वर्ष जवाब:

इसका मतलब है कि string वर्तमान पंक्ति में निर्धारित नहीं है यही कारण है कि कुछ इस तरह होगा। std::string आज़माएं।

+0

और सुनिश्चित करें कि शामिल है। –

+0

मैंने अभी फ़ाइल के शीर्ष को दिखाने के लिए प्रश्न संपादित किया है। उसके लिए माफ़ करना। – epochwolf

+0

यूप, यह समस्या थी। मैं शामिल गार्ड जोड़ने के लिए भूल गया। – epochwolf

2

बस मेरे दो सेंट, लेकिन मैं आपको पहले से संकलित हैडर

#define Card 
#define Hand 
#define AppError 

इस्तेमाल किया, जैसे कि तुम संकलक बताने के लिए करना चाहता था "अरे, कक्षाएं कार्ड, हाथ और AppError कहीं परिभाषित कर रहे हैं" लगता है (यानी आगे की घोषणाओं)।

हम उपेक्षा यहां तक ​​कि अगर तथ्य मैक्रो सटीक कारण अपने कोड संकलन नहीं था के लिए एक दर्द कर रहे हैं (के रूप में जॉन मिललिकिन डाल दिया, अपनी फ़ाइल mangling), शायद तुम क्या लिखना चाहते थे की तरह कुछ था:

class Card ; 
class Hand ; 
class AppError ; 

उन कक्षाओं के आगे-घोषणाएं हैं।

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