c++多文件编译小问题,请指点!!
在类的编写过程中,通常采用多文件编译的方法,采用头文件,cpp文件,main文件多文件编写。我在编写一个小的函数模板问题时也采用了这样的方法,但是出现了问题。下面是问题的描述:
//模板.h文件:
#include <iostream>
using namespace std;
template <typename T>
void outputarray(const T *array,const int count);
//模板.cpp文件:
#include "模板.h "
template <typename T>
void outputarray(const T *array,const int count)
{
for(int i=0;i <count;i++)
cout < <*(array++) < < " ";
cout < <endl;
}
//main文件:
#include "模板.h "
int main()
{
const int acount=8;
const int bcount=8;
const int ccount=20;
int a[acount]={1,2,3,4,5,6,7,8};
int b[bcount]={7,8,9,4,5,6,2,3};
char c[ccount]= "I AM LIQIANG! ";
cout < < "数组a包含的内容是: " < <endl;
outputarray(a,acount);
cout < < "数组b包含的内容是: " < <endl;
outputarray(b,bcount);
cout < < "数组c包含的内容是: " < <endl;
outputarray(c,ccount);
return 0;
}
这样在编译时出现了错误,若把“模板.cpp”文件去掉,就是说在上述函数模板声明过程中直接进行函数的定义,此时就不会出现错误。
我的问题是这样的:在类模板的声明过程中可以把类模板的声明和定义放在两个文件中,为什么在函数模板的应用中放在两个文件中(想上面我写得那样)就会出现问题呢?
请高手指点。谢谢!!
万分感激!!
[解决办法]
模板暂时不支持 声明和实现的 分离
[解决办法]
理论上应该可以分离,
但是目前的编译器暂时基本都不支持这个分离 ~
如果不是模板,
那是可以分离的。