Аналогичная картина — с шаблонами функций. Попробуем шаблон функции Summa () (см. листинг 12.1) поместить в отдельный файл Summa.h, а в функции main() просто зададим прототип-объявление (листинг 13.12).
Листинг 13.12. «Использование» шаблона функции
#include <iostream> #include <string> using namespace std;
template <typename T> // прототип шаблона функции
T Summa(T const *begin, T const *end); int main()
{ int a[10]= {1,2,3,4,5,6,7,8,9.10}; cout << Summa(a, a+10) << endl; double b[10]= {1.1,2.3.4,5,6,7,8,9,10.1}; cout << Summa(b, b+10) << endl; string d[4] = {,,l+,,i,,2+,,,,,3+,,,,,4+,,}; cout << Summa(d, d+4) << endl; short s[2]= { 10000,10000 }; cout << Summa(s, s+2) << endl; int x; cin >> x; return 0;
}
Транслируется все опять без ошибок, однако компоновщик снова не находит определения функции и не может скомпоновать программу. |