7

मैं नीचे दिए गए कोड में एक त्रुटि मिली:वर्ग टेम्पलेट राज्य डेटा सदस्य नहीं एक इकाई है कि हो सकता है स्पष्ट रूप से विशेष

template<typename T, bool B = is_fundamental<T>::value> 
class class_name; 

template<> 
class class_name<string, false>{ 
public: 
    static string const value; 
}; 

template<> 
string const class_name<string, false>::value = "Str"; 
// error: not an entity that can be explicitly specialized.(in VC++) 

मैं इसे कैसे ठीक कर सकते हैं?

+6

स्थिर सदस्य विशेषज्ञ बाहर छोड़ दें 'टेम्पलेट <>' में 'मूल्य' की परिभाषा। –

+0

@KerrekSB आपको बहुत धन्यवाद ! –

+0

@KerrekSB इस तरह का उत्तर आमतौर पर "उत्तर" नहीं बन जाएगा? मैं यह जानने की कोशिश कर रहा हूं कि जब हम किसी टिप्पणी में कुछ जवाब देते हैं तो हमें क्या करना चाहिए/नहीं करना चाहिए। – JaredC

उत्तर

5

आप यहां दो अलग-अलग दृष्टिकोण जोड़ रहे हैं। पहले

template<typename T, bool B = is_fundamental<T>::value> 
class class_name; 

// NOTE: template<> is needed here because this is an explicit specialization of a class template 
template<> 
class class_name<string, false>{ 
public: 
    static string const value; 
}; 

// NOTE: no template<> here, because this is just a definition of an ordinary class member 
// (i.e. of the class class_name<string, false>) 
string const class_name<string, false>::value = "Str"; 

वैकल्पिक रूप से @KerrekSB ने सुझाव दिया है कि आप पूर्ण सामान्य वर्ग टेम्पलेट बाहर लिख सकता है और स्पष्ट रूप से के लिए <string, false>

template<typename T, bool B = is_fundamental<T>::value> 
class class_name { 
public: 
    static string const value; 
}; 

// NOTE: template<> is needed here because this is an explicit specialization of a class template member 
template<> 
string const class_name<string, false>::value = "Str"; 
+0

उपरोक्त। साथ ही, दोनों मामलों में परिभाषाएं सीपीपी फ़ाइल में और विशेषज्ञता के मामले के मामले में होने की आवश्यकता है, आपको शीर्षलेख में विशेषज्ञता घोषित करने की आवश्यकता है। –

+0

@ जोहान्सचैब-लीट हां, अच्छे अंक, मैं उससे बहुत चिंतित नहीं था क्योंकि पोस्टर के पास 'मुख्य() 'आदि नहीं था। – TemplateRex

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

  • कोई संबंधित समस्या नहीं^_^