Avatar ·

C++ टेम्पलेट्स को заголовочном файле में क्यों परिभाषित करना चाहिए, .cpp में नहीं?

```html अनुवाद सभी को नमस्ते! मैंने C++ सीखना शुरू किया है और एक समस्या का सामना किया जो मुझे बहुत भ्रमित करती है। मैं कोड को заголовочном файлах (.h) और implementation files (.cpp) में विभाजित करने की कोशिश कर रहा हूँ, जैसा मुझे सामान्य classes और functions के लिए सिखाया गया था। लेकिन जब मैं templates का उपयोग करता हूँ, तो यह काम करना बंद कर देता है। यहाँ एक सरल उदाहरण है। मेरे पास एक заголовочный файл `math_utils.h` है:
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

template <typename T>
T max(T a, T b);

#endif
और एक implementation file `math_utils.cpp`:
#include "math_utils.h"

template <typename T>
T max(T a, T b) {
    return (a > b) ? a : b;
}
और `main.cpp`:
#include <iostream>
#include "math_utils.h"

int main() {
    std::cout << max(3, 7) << std::endl;
    std::cout << max(3.5, 2.1) << std::endl;
    return 0;
}
कंपाइल करने पर मुझे linker error (undefined reference) मिलता है। ऐसा क्यों? आखिर सामान्य functions के साथ यह तरीका बढ़िया काम करता है। मैंने पढ़ा है कि templates को सीधे заголовочном файле में परिभाषित करना चाहिए। ```