मैं एक टेम्पलेट क्लास लिखने की कोशिश कर रहा हूं जो <class>
पर आधारित कक्षाएं बना सकता है। समस्या यह है कि मैं उसी .h
फ़ाइल में घोषित और परिभाषित नहीं कर सकता। मेरी परियोजना में, यूटीएफ उपकरण केवल .cpp
फ़ाइलों (कोड कवरेज आदि के लिए) के साथ काम कर सकता है। मैंने एक ब्लॉग में देखा है कि वे कहते हैं " के बजाय .cpp
जोड़ें"। क्या यह सलाह दी जाती है?टेम्पलेट क्लास कार्यान्वयन में अलग .h और .cpp फ़ाइलें
Template.h
#ifndef TEMPLATE_H_
#define TEMPLATE_H_
template<class T>
class Template
{
public:
T Add(T a,T b);
};
#endif /* TEMPLATE_H_ */
Template.cpp
#include "Template.h"
template<class T>
T Template<T>::Add(T a, T b)
{
return a+b;
}
Main.cpp
#include "Template.cpp" //Is this a good practise?
#include <iostream>
int main(int argc, char **argv) {
Template<int> obj;
std::cout<<obj.Add(3,4)<<std::endl;
}
यदि यह तो उचित नहीं है कि कैसे मैं इस समस्या को हल करते हैं? export
?
यह सख्ती से सच नहीं है। हालांकि प्रत्येक अनुवाद इकाई में परिभाषाओं को रखना सबसे सुविधाजनक है, और इस प्रकार सामान्य अभ्यास, यह एक आवश्यकता नहीं है। –
@MarkRansom Yup, आप सही हैं। हालांकि, "अग्रिम में" सभी आवश्यक स्पष्ट तत्कालताओं को करने में सक्षम होना बहुत दुर्लभ है। – Angew