|
|
发表于 2009-6-17 11:37:00
|
显示全部楼层
Re:c++模板编译问题
从两个角度说下:1、模板简单的理解就是一种按照数据类型的套用格式,所以模板函数的实现放在CPP中也不会在编译阶段生成目标代码。在连接阶段找不到目标代码当然就会连接出错了。一般情况下都是放在头文件中,这样在编译引用此头文件并且指明了具体数据类型的CPP文件时会按照模板中的格式替换数据类型编译,依此生成目标代码。2、模板声明之后并不会编译成为目标代码,需要你具体制定套用哪种数据类型才可以,如果只指定为int,则在编译时把所有“T”的位置替换为int然后编译,如果你指定了float,则也会进行相应的替换。简单的说就是编译器自动帮你生成了针对int和float的重载函数。当然你也可以指定一个class,但是前提是这个class必须支持你在这个模板函数中所使用的符号,例如
template<typename T>
T a,b,c;
a = b + c;
如果T使用了class,则这个class必须重载“+”和“=”操作符。 |
|