मुझे एहसास है कि पहले से ही ऐसे प्रश्न पूछे गए हैं, लेकिन मैंने उनमें से कुछ को पढ़ा है और अभी भी यह नहीं देख रहा कि मैं कहां गलत हूं। जब मैं परिभाषा से प्रोटोटाइप को अलग किए बिना अपनी कक्षा लिखता हूं, तो सब कुछ ठीक काम करता है। समस्या होता है जब मैं प्रोटोटाइप और परिभाषा अलग रूप में नीचे दिखाया गया है:"टेम्पलेट पैरामीटर के बिना प्रयोग किया जाता है"
template<class T> class VisitedSet {
public:
VisitedSet();
int getSize();
void addSolution(const T& soln);
void evaluate();
private:
vector<T> vec;
int iteration;
};
और एक परिभाषा का एक उदाहरण है कि मुझे इस त्रुटि देता है के रूप में:
int VisitedSet::getSize() {
return vec.size();
मैं पहले एक टेम्प्लेटेड वर्ग बनाया कभी नहीं किया है , तो कृपया मुझे माफ़ कर दो अगर समस्या यहां मामूली है।
नोट: ज्यादातर मामलों में आप हेडर में टेम्पलेट सदस्य कार्यों की परिभाषाओं को परिभाषित करना चाहते हैं। यदि परिभाषा शीर्षलेख में हैं, तो उन्हें 'इनलाइन' (या उन्हें टेम्पलेट श्रेणी परिभाषा के अंदर परिभाषित करें) के रूप में चिह्नित करना याद रखें, यदि वे नहीं हैं, तो दो बार सोचें और सुनिश्चित करें कि आपको शीर्षलेख में परिभाषाओं की आवश्यकता नहीं है (आप करते हैं यदि आप स्पष्ट रूप से अनुवाद इकाई में तत्काल प्रारंभ करते हैं जिसमें * सभी * प्रकारों के लिए परिभाषा शामिल है, जिसके साथ आप टेम्पलेट का उपयोग करना चाहते हैं) शीर्षलेख में परिभाषाओं की आवश्यकता नहीं है। मुझे डर है कि आप इसे जल्द से जल्द प्राप्त करने जा रहे हैं ... –