वहाँ अंतर्निहित मानकों के साथ टेम्पलेट वर्ग की एक घोषणा है :टेम्पलेट्स, सी ++
Analysis.h
template <typename T, const bool attribute = true>
class List;
लेकिन जी ++ इस त्रुटि दिखाता है:
List.h:28: error: redefinition of default argument for `bool attribute'
Analysis.h:43: error: original definition appeared here
अगर मैं अंतर्निहित पैरामीटर के बिना आगे घोषणा का उपयोग
template <typename T, const bool attribute>
class List;
संकलक इस निर्माण
Analysis.h
void function (List <Object> *list)
{
}
स्वीकार करते हैं और निम्न त्रुटि से पता चलता नहीं है (अर्थात अंतर्निहित मूल्य स्वीकार नहीं करता है):
Analysis.h:55: error: wrong number of template arguments (1, should be 2)
Analysis.h:44: error: provided for `template<class T, bool destructable> struct List'
Analysis.h:55: error: ISO C++ forbids declaration of `list' with no type
अपडेट किया गया प्रश्न:
मैं टेम्पलेट परिभाषा से डिफ़ॉल्ट पैरामीटर हटाया:
List.h
template <typename Item, const bool attribute>
class List: public OList <item, attribute>
{
public:
List() : OList<Item, attribute>() {}
....
};
पहले कक्षा सूची का उपयोग कर फ़ाइल में पैरामीटर विशेषता
के निहित मूल्य के साथ आगे की घोषणा हैAnalysis1.h
template <typename T, const bool attribute = true>
class List; //OK
class Analysis1
{
void function(List <Object> *list); //OK
};
दूसरा आगे परिभाषा के साथ कक्षा सूची का उपयोग कर निहित मूल्य
का उपयोग कर Analysis2.h
template <typename T, const bool attribute = true> // Redefinition of default argument for `bool attribute'
class List;
class Analysis2
{
void function(List <Object> *list); //OK
};
द्वितीय श्रेणी आगे परिभाषा का उपयोग किए बिना वर्ग सूची का उपयोग कर वर्ग निहित मूल्य
विश्लेषण 2.h
template <typename T, const bool attribute> // OK
class List;
class Analysis2
{
void function(List <Object> *list); //Wrong number of template arguments (1, should be 2)
};
ठीक है मैं आपकी समस्या को समझ में हो जाता है। ऐसा इसलिए है क्योंकि आप प्रत्येक फ़ाइल में आगे की घोषणा जोड़ते हैं जहां आप * 'सूची 'का उपयोग करते हैं। ऐसा मत करो। इसके बजाय 'List.h' में आगे की घोषणा जोड़ें, जहां आप' सूची '** और **' # शामिल करें "List.h" को परिभाषित करते हैं, जहां आप 'सूची' का उपयोग करते हैं। अगर आपको अभी भी समस्या का सामना करना पड़ता है तो मुझे बताएं! – Nawaz
तो अपडेट के बाद आपका प्रश्न क्या है? – UmmaGumma