模板类 - 未解析的外部符号

时间:2011-04-25 09:05:04

标签: c++ class templates

我得到这个错误很多,我不知道为什么。有人能帮我找到原因吗?

编辑:删除代码

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

将实现(您的方法定义)与类声明一起放入标题中(参见this in the C++ FAQ)。有些编译器支持一个“export”关键字,就像你那样做了,但是它已经被C ++ 0x所取代。

答案 2 :(得分:1)

发生此错误的原因是,您的template定义对用户代码不可见。模板定义应该在

中声明
  1. 头文件以及模板 声明
  2. 在.cpp文件中,用户所在的位置 代码使用它。但是在这 接近定义的方法 仅对使用的.cpp可见 它。见下面的例子
  3. test.h

    template<typename T>
    void foo (T*);
    

    TEST.CPP

    int main ()
    {
      foo(1);
    }
    
    template<typename T>
    void foo (T *p)
    {
     ...
    }
    

    测试2.cpp

    // This file can not see the definition of foo