在把函数模板写到项目中的时候,我专门在vs中试验了一下,木有错误,运行正常后,我再写到linux下的项目中,在编译的时候,报错了:2264: undefined reference to `void CUnion::sendValueToAllMem<unsigned char>(unsigned short, unsigned char)'。起初,我以为是ubuntu环境和windows的问题(个人认为好多时候是的),也没发现什么,于是google之。看了一篇文章后才想起来:模板不能分开编译。
这样就知道了,vs中编译运行正常是因为都在一个cpp文件中,而项目中,我把模板的声明和定义分别放在了.h和.cpp文件中。ok,长点记性吧。因为这个函数要循环,放在头文件中不太好,还是函数重载它吧。