2011-05-08 94 views
2

我有一個類移動,上色,設置文本...等任何GUI在窗口:錯誤:模板函數LNK2019解析的外部符號「公用」

class BasicOption 
{ 
public : 
template <class T> 
void SetPosition (float x , float y , T const*Obj); 
}; 

,並這樣定義函數:

template <class T> 
void BasicOption::SetPosition (float x , float y , T const*Obj) 
{ 
this->Obj->SetPosition(x ,y); 
} 

我有一流的每一件事情正常工作創建這樣

class GUI_Window : public BasicOption 

{ 
public: // <-- This colon was added in response to some answers 
GUI_Window(float const&width , float const&height String const&name) 
}; 

確定一個窗口,但如果我叫牛逼他在主函數SETPOSITION我得到

error: LNK2019 unresolved external symbol "public" 

的main.cpp

GUI_Window *W ; // MyWindow 
int WINAPI wWinMain (HINSTANCE hInst , HINSTANCE hPrev , LPWSTR lmcmdline , int nShowCmd) 
{ 
.............. 
........... 
.......... 
........... 

W->SetPosition (520 , 250 , W); 


} 

也是我改變這樣

{ 
W->SetPosition <GUI_Window>(520 , 250 , W); 
} 

,但仍是代碼有同樣的問題

/**/

傢伙我發現了問題

它的聯繫,我在main.cpp中定義的功能,這是正常工作 ,但如果我把它定義了的main.cpp文件外,我得到錯誤母豬任何幫助鏈接此功能 並在main.cpp外定義它

+0

冒號我改變的代碼,但我有同樣的probleme – user722528 2011-05-08 11:08:13

+0

你應該標記,你在改變了代碼的地方問題,否則下一個來這裏的人會非常惱火! – 2011-05-08 11:15:14

+1

模板應該內聯定義,而不是在單獨的文件中。 – 2011-05-08 12:55:27

回答

2

它是public:而不是public - 而且您缺少分號。

class GUI_Window : public BasicOption 

{ 
public: 
    GUI_Window(float const&width , float const&height String const&name); 
}; 
+0

class BasicOption { public: template void SetPosition(float x,float y,T const * Obj); }; – user722528 2011-05-08 11:01:22

+0

我更改了代碼,但我遇到了同樣的問題 – user722528 2011-05-08 11:07:41

+0

@ user722528:向我們顯示完整的代碼,可以再現問題並完成錯誤消息。 – Erik 2011-05-08 11:51:00

0

之前從未見過的錯誤信息,但你缺少在

public 
    GUI_window(... 
+0

我更改了代碼 – user722528 2011-05-08 11:06:55

相關問題