我有一个类似下面的课程:
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'
当我编译它时,我该如何解决这个错误。感谢
答案 0 :(得分:2)
好吧,您应该实现模板类contains()
的函数Set
。
请记住,模板函数必须内联定义,因此您希望将定义放在同一个头文件中。
答案 1 :(得分:0)
那么,
的定义在哪里 bool contains(const T& e) const;
看起来您的定义位于其他文件中。 模板函数的定义应该与类一起。 这与普通的C ++类不同。