[链接器错误]未定义引用`Set <std :: string> :: contains(std :: string const&amp;)const'</std :: string>

时间:2012-02-09 16:34:46

标签: c++

我有一个类似下面的课程:

  template<typename T>
  class Set{
  public:
  bool contains(const T& e) const;
  };

当我将这个班级的成员变成另一个班级时:

  class Dfa {
    private:
    Set<string> F;
    public:
    bool accepts() const
    {
     string temp;
     return F.contains(temp);
    }
    };

好吧,这些只是实际类的一些函数和函数语句。任何人都可以告诉我为什么会收到错误:

[Linker error] undefined reference to `Set<std::string>::contains(std::string const&) const' 

当我编译它时,我该如何解决这个错误。感谢

2 个答案:

答案 0 :(得分:2)

好吧,您应该实现模板类contains()的函数Set

请记住,模板函数必须内联定义,因此您希望将定义放在同一个头文件中。

答案 1 :(得分:0)

那么,

的定义在哪里
    bool contains(const T& e) const;

看起来您的定义位于其他文件中。 模板函数的定义应该与类一起。 这与普通的C ++类不同。