मैं XmlWriter
कक्षा पर काम कर रहा हूं, और मैं अधिकांश मानक डेटा स्वरूपों (तार, पूर्णांक, फ़्लोटिंग पॉइंट नंबर इत्यादि) में विशेषताओं या पाठ को आउटपुट करने में सक्षम होना चाहता था। इसे प्राप्त करने के लिए, मैं एक फ़ाइल स्ट्रीम का उपयोग कर रहा हूँ।मैं सी ++ कक्षाओं में टेम्पलेट विशेषज्ञता का उपयोग कैसे कर सकता हूं, और यह संकलित क्यों नहीं करता है?
bool
डेटा प्रकार के लिए, मैं इतना है कि यह true
और false
बजाय 1
और 0
आउटपुट, टेम्पलेट के लिए एक विशेषज्ञता निर्दिष्ट करने के लिए करना चाहता था।
हालांकि, निम्नलिखित कोड को संकलित करने के प्रतीत नहीं होता:
class XmlWriter {
private: /* ... */
public: /* ... */
template <typename T>
void writeText(T text) {
/* ... */
}
template <> // <-- error: explicit specialization in non-namespace scope 'class Strategy::IO::XmlWriter'
void writeText<bool> (bool text) { // <-- error: template-id 'writeText<>' in declaration of primary template
/* ... */
}
template <typename T>
void writeAttribute(std::string key, T value) { // <-- error: too many template-parameter-lists
/* ... */
}
template <> // <-- error: explicit specialization in non-namespace scope 'class Strategy::IO::XmlWriter'
void writeAttribute<bool> (std::string key, bool value) { // <-- error: variable or field 'writeAttribute' declared void; expected ';' before '<' token
/* ... */
}
}; // <-- expected ';' before '}' token
मुझे समझ नहीं आता, क्यों इन सभी त्रुटियों, के बाद से मैं इंटरनेट पर विभिन्न वेबसाइटों पर प्रस्तुत सही सिंटैक्स का इस्तेमाल किया?
मैं सिग्विन जीसीसी का उपयोग कर रहा हूं।
यह VC2010 पर ठीक संकलित। विशेषज्ञता प्रदान करने के बजाय आप केवल कार्यों को अधिभारित कर सकते हैं: 'शून्य लेखन टेक्स्ट (बूल टेक्स्ट); '। – hmjd
ठीक है, afaik VC2010 बहुत मानक अनुपालन नहीं है ... कोड जीसीसी में संकलित नहीं है। – Tibi
जीसीसी का कौन सा संस्करण? – hmjd