注册 登录
编程论坛 C++教室

类模板的声明和实现怎么分开在不同的文件完成

hzz063 发布于 2010-07-01 15:48, 2516 次点击
好比我用三个文件来完成:

//头文件 A.h   声明
template <class t>
class compare
{
    public:
        compare(t , t );        
        t max(void);

    private:
        t x,y;
};
//////////////////////////////////////

//文件 B.cpp    实现
#include "A.h"   
 
template <class t>
compare<t>::compare(t a, t b)
    {
            x = a; y = b;
    }

template <class t>
t compare<t>::max(void)
    {
            return (x > y)? x:y;
    }
/////////////////////////////////////////////
 //文件 main.cpp
#include "A.h"

int main(void)
{
    compare<float> a(10.1, 20.1);

    return 0;
}
//////////////////////////////////////////////

为什么连接时出错呢???
4 回复
#2
debroa7232010-07-01 21:41
文件 B.cpp 里的内容放到A.h里,不需要B.cpp
因为模板的实现只能在头文件里

[ 本帖最后由 debroa723 于 2010-7-1 21:42 编辑 ]
#3
迷失的木桶2010-07-02 06:57
把那个Cpp改成Hpp,然后在H文件末尾inclued 那个Hpp
#4
南国利剑2010-07-02 10:58
这是个老问题了,模板类的声明和实现似乎不能分开。
编译器不支持。
我用的是vc++6.0就不支持分离模式。
#5
lenghaijun2010-11-06 11:49
阿,终于找到了,太不容易了,vs2010也不支持……
1