首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数模板的简单有关问题

2012-07-30 
函数模板的简单问题。cu_test.cppC/C++ code#include stdio.h#include stdlib.h#include string.h#in

函数模板的简单问题。
cu_test.cpp

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "cu_test.h"static int test_cnt=0;static int err_cnt=0;template<typename T>void cu_test(const T test,const T correct,             char *const file_name,const int line_cnt){    if(test!=correct)    {        const char *str=file_name+strlen(file_name);        while(*str!='\\')        {            str--;        }        str++;        printf("%s的第%d行错误!\n",str,line_cnt);        err_cnt++;    }    test_cnt++;}template<>void cu_test<const char*>(const char *test,const char *correct,                          char const *file_name,const int line_cnt){    if(strcmp(test,correct)!=0)    {        const char *str=file_name+strlen(file_name);        while(*str!='\\')        {            str--;        }        str++;        printf("%s | line %d error!\n",str,line_cnt);        err_cnt++;    }    test_cnt++;}



cu_test.h
C/C++ code
#ifndef _CU_TEST_H_#define _CU_TEST_H_template<typename T>void cu_test(T test,T correct,const char* file_name,const int line_cnt);template<>void cu_test<const char*>(const char *test,const char *correct,                          const char *file_name,const int line_cnt);#define CU_TEST(test,correct) cu_test(test,correct,__FILE__,__LINE__)extern void CU_INFO();#endif


main.cpp
C/C++ code
#include <stdio.h>#include <stdlib.h>#include "cu_test.h"int main(){    unsigned short a=1;    unsigned short b=2;    CU_TEST(a,b);    system("pause");    return 0;}


提示如下错误:

error LNK2019: 无法解析的外部符号 "void __cdecl cu_test<unsigned short>(unsigned short,unsigned short,char const *,int)" (??$cu_test@G@@YAXGGPBDH@Z),该符号在函数 _main 中被引用

我把main函数放到cu_test.cpp中就无错误,请问是我的头文件声明的问题吗?感谢!

[解决办法]
楼主知道模板是不支持分离编译的么?你把cu_test.cpp里面的函数合并到.h头文件中吧。

热点排行