Possible Duplicate:
C++ template, linking error
Undefined symbol on a template operator overloading function模板子類 - 無法解析的外部
所以我有一個抽象類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)" ([email protected][email protected]@@[email protected])
...和抽獎一樣的東西()
任何想法?我對C++比較陌生,所以我希望可能有些愚蠢的做法我錯了。
在頭文件中的覆蓋的方法?或者cpp文件?如果他們在cpp文件中,他們需要在頭文件中:http://stackoverflow.com/questions/1353973/c-template-linking-error – JaredC
我懷疑你需要閱讀這個:http:// www.parashift.com/c++-faq/separate-template-fn-defn-from-decl.html。 –
@JaredC工作!謝謝。 – mclaassen