Avatar ·

C++ टेम्पलेट्स को हेडर फ़ाइलों में क्यों लागू किया जाना चाहिए? undefined reference त्रुटि

नमस्ते! मैं C++ में नया हूँ और टेम्पलेट्स को समझने की कोशिश कर रहा हूँ। मेरे पास तीन फ़ाइलों का एक सरल प्रोजेक्ट है: `main.cpp`, `math_utils.h` और `math_utils.cpp`। हेडर फ़ाइल में मैंने एक टेम्पलेट फ़ंक्शन घोषित किया: ```cpp // math_utils.h #ifndef MATH_UTILS_H #define MATH_UTILS_H template T max(T a, T b); #endif ``` कार्यान्वयन फ़ाइल में मैंने लिखा: ```cpp // math_utils.cpp #include "math_utils.h" template T max(T a, T b) { return (a > b) ? a : b; } ``` और `main.cpp` में मैं उपयोग करता हूँ: ```cpp // main.cpp #include #include "math_utils.h" int main() { std::cout << max(5, 10) << std::endl; return 0; } ``` कंपाइल करने पर मुझे लिंकिंग त्रुटि मिलती है: `undefined reference to 'int max(int, int)'`। मैंने पढ़ा है कि टेम्पलेट्स को हेडर फ़ाइलों में लागू किया जाना चाहिए, लेकिन क्यों? आखिर सामान्य फ़ंक्शंस के साथ ऐसी कोई समस्या नहीं है — मैं `.h` में घोषित कर सकता हूँ, `.cpp` में लागू कर सकता हूँ, और सब काम करता है। टेम्पलेट्स के साथ ऐसा क्यों नहीं है? क्या कोई...