可能重复:
C++ 模板,链接错误
模板运算符重载函数上的未定义符号
所以我有一个抽象的 Button 类:
class Button
{
public:
int x, y, width, height;
std::string label, text;
bool checkForClick(int mouseX, int mouseY);
virtual void click(int mouseX, int mouseY) =0;
virtual void draw(); //has a default implementation which can be overridden
};
和一个我想成为模板类的子类:
template <typename T>
class IncrementButton : public Button
{
public:
T& controlValue;
T increment;
T minVal, maxVal;
IncrementButton(T& controlValue) : controlValue(controlValue) {}
void click(int mouseX, int mouseY);
void draw();
};
被覆盖的方法如下所示:
template <typename T>
void IncrementButton<T>::click(int mouseX, int mouseY)
{
//do something with controlValue
}
template <typename T>
void IncrementButton<T>::draw()
{
//use value of controlValue
}
但这不会编译。它给了我错误:
Error 1 error LNK2001: unresolved external symbol "public: virtual void __thiscall IncrementButton<float>::click(int,int)" (?click@?$IncrementButton@M@@UAEXHH@Z)
...对于 draw() 也是一样的
有任何想法吗?我对 C++ 比较陌生,所以我希望我做错了一些愚蠢的事情。