Posted on 2006-09-04 22:43
樱木 阅读(1383)
评论(0) 编辑 收藏 引用 所属分类:
程序设计语言
今天用类模板写了一个可扩展空间的栈. compile没问题, 一run就发现报链接错误, 说几个类的成员函数都找不到:
error LNK2001: unresolved external symbol ****. 检查了一下, 发现和以前写的没什么两样啊, 后来才发现原来所有的函数定义及实现都是放在一个.h中, 现在遵循良好的设计规范, 把类定义放在.h中, 类的实现放在.cpp中反而出错了?? 晕!
网上查了一点资料, 发现VC6好像是不支持分开写的, (不是模板当然可以!), 无论是类模板还是函数模板, 都必须写在一个.h文件中. 有人可能会说那么这个包含方法实现的头文件如果多个其他文件include它, 那不是就有问题了么? 要不要#pragma once呀, 这里明确告诉你, 不用的. <<Thinking in C++>>里面说, 因为类模板的.h文件和普通类的.h文件在编译器处理的时候好像是有区别的. 原因自己去看书吧, 不过书里说得不多,我也忘记啦.