有关模板的问题~
//用C++编写一个函数模板,对不同类型的数组求平均值。在main函数中分别求一个整型数组和一个单精度浮点型数组的平均值。
/* average.h */
#ifndef AVERAGE_H
#define AVERAGE_H
template <class T>
T average(T a[],int n)
{
T averValue,sum=0;
for(int i=0;i <n;i++)
sum+=a[i];
averValue=sum/n;
return averValue;
}
#endif
#ifndef DISPLAY_H
#define DISPLAY_H
template <class T>
void display(T a[],int n)
{
cout < < "数组元素如下所示:\n ";
for(int i=0;i <n;i++)
cout < <a[i] < < "\t ";
cout < <endl;
}
#endif
#include <iostream.h>
#include "average.h "
#include "display.h "
void main()
{
int a[]={1,3,6,7,2,9};
float b[]={1.3,2.8,6.9,7.1,5.6};
display(a,sizeof(a)/sizeof(int));
cout < < "该数组的平均值为: " < <average(a,sizeof(a)/sizeof(int)) < <endl;
display(b,sizeof(b)/sizeof(float));
cout < < "该数组的平均值为: " < <average(b,sizeof(b)/sizeof(float)) < <endl;
}
上面这段程序中,为什么编译时总是显示#include "average.h "出错,,,,,但如果把#include "average.h "
和#include "display.h "
放在头文件的另一个文件夹中编译时,就能通过,,,我想知道的是为什么,,,,
谢谢!
[解决办法]
#include "average "
#include "average "
[解决办法]
帮你改了一下,现在才明白你做什么,在vc下编译通过
/* average.h */
#include <iostream.h>
template <class T>
T average(T a[],int n)
{
T averValue,sum=0;
for(int i=0;i <n;i++)
sum+=a[i];
averValue=sum/n;
return averValue;
}
template <class T>
void display(T a[],int n)
{
cout < < "数组元素如下所示:\n ";
for(int i=0;i <n;i++)
cout < <a[i] < < "\t ";
cout < <endl;
}
void main()
{
int a[]={1,3,6,7,2,9};
float b[]={1.3,2.8,6.9,7.1,5.6};
display(a,sizeof(a)/sizeof(int));
cout < < "该数组的平均值为: " < <average(a,sizeof(a)/sizeof(int)) < <endl;
display(b,sizeof(b)/sizeof(float));
cout < < "该数组的平均值为: " < <average(b,sizeof(b)/sizeof(float)) < <endl;
}