为什么模板类的定义和实现代码必须写在一个头文件里,而不能像一般的类那样放在h和cpp两个文件里,否则link时报错.为什么???
谢谢

解决方案 »

  1.   

    但是我的宏可以写在CPP里面啊
      

  2.   

    同意“In355Hz(好象一条狗)”的意见在ANSI C 的标准文献中,将你所指的“CPP 中的类代码”称为statement;将你所指的“H 中的类代码”称为definition,两者的定义是完全不同的
    主要指:statement将被C 编译器直接转换为二进制代码,而definition 只被C 编译器用于一些文本处理工作中(类似于宏)
    一个definition,它的出现必须是完整的。模板却只有definition 而没有statement,你就不能把“模板语句”分离出来
    一个模板只是单个的definition,你可以把宏放到CPP文件中,所以你也可以把模板的定义整个地放在CPP文件中
      

  3.   

    我觉得ANSI C 的标准文献对我最深刻的印象是“顺序点(sequence points)”。我认为在强调功能性的代码中,应该强调顺序点的概念顺序点直接违背OOP的软件工程的思路,但我是觉得所有的功能性代码,可以作为基本函数库,这样顺序点对软件结构的危害就可以降到最低
    如果函数被划分为功能性代码,都应该被static 修饰,因为当所有相关变量都通过参数传递,所有的状态都出现在栈上的时候,功能性代码将是最容易调测试的!
      

  4.   

    回复人: GoldenSword(金错刀) ( ) 信誉:110  2003-04-07 19:26:00  得分:0 
     
     
      但是我的宏可以写在CPP里面啊
    ----------------------------------假设a.cpp: #include "a.h",宏写在a.h里边和a.cpp里边,a.cpp都可以正确编译;假如宏写在a.cpp中,其他include "a.h" 的cpp就不能用。
    所谓include,可以想象成把.h和.c/.cpp拼接起来编译。