2012-06-07 19 views
5

में निर्माता के लिए सिंटेक्स मैं एक सामान्य परिपत्र बफर टेम्पलेट बनाने की कोशिश कर रहा हूं लेकिन कुछ वाक्यविन्यास त्रुटि है जिसे मैं समझ नहीं पा रहा हूं। त्रुटि मेरे कन्स्ट्रक्टर में है, हालांकि ऐसा लगता है कि मैंने विनाशक को उसी तरह पैरामीटर किया है और यह एक काम करता है। मैंने स्ट्रॉस्ट्रप सी ++ में उदाहरण का पालन किया है, और वह स्कोप रेज़ोल्यूशन ऑपरेटर से पहले और फ़ंक्शन नाम में पैरामीटर का उपयोग करता है, जैसा कि मेरे पास है। मुझे यह भी निश्चित है कि कोई परिपत्र निर्भरता नहीं है क्योंकि मैं केवल एक फ़ाइल संकलित कर रहा हूं। इसके अलावा कार्यान्वयन और घोषणाएं एक ही फ़ाइल (CircBuf.h) में हैं और कोई संबंधित .cpp फ़ाइल नहीं है, इसलिए लिंकिंग भी कोई समस्या नहीं होनी चाहिए। मैंने this समाधान के अनुसार "इनलाइन" कीवर्ड जोड़ने का प्रयास किया है और मुझे एक ही त्रुटि मिलती है।टेम्पलेट वर्ग

/* CircBuf.h */ 
template<typename T> class CircBuf { 
    // don't use default ctor                                    
    CircBuf(); 

    int size; 
    T *data; 
public: 
    CircBuf(int); 
    ~CircBuf(); 
}; 

template<typename T> CircBuff<T>::CircBuf<T>(int i) { 
    data = new T[i]; 
} 
template<typename T> CircBuf<T>::~CircBuf<T>() { 
    delete data; 
} 

makefile

all: 
     g++ -g -pedantic CircBuf.h -o prog 

संकलक त्रुटि

CircBuf.h:13:22: error: ‘CircBuff’ does not name a type 
+5

आपने एक उदाहरण में 'सर्कबफ' की बजाय 'सर्कबफ' लिखा था। यह संकलक आपको बताने की कोशिश कर रहा है। –

उत्तर

9

CircBuff निश्चित रूप से एक प्रकार का नाम नहीं है, आप किस प्रकार का इरादा के नाम एक भी f साथ CircBuf है।

ध्यान दें कि आपको दोनों कन्स्ट्रक्टर और विनाशक पर पीछे <T> को पीछे हटाना होगा।

+3

वाह मुझे विश्वास नहीं है कि मैंने अभी गलती की है – xst

+0

सर्कबफ.h: 15: 22: त्रुटि: 'सर्कबफ :: सर्कबफ' निर्माता का नाम है, प्रकार सर्कबफ.h: 15: 22: त्रुटि: और ' CircBuf 'कोई टेम्पलेट कंस्ट्रक्टर्स – xst

+0

है मैं इस तरह समारोह नाम से पैरामीटर निकाल दिया है और यह काम करता है: टेम्पलेट CircBuf :: CircBuf (int मैं) – xst

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