2012-03-16 64 views
0

我有類,在它的一個方法中,我從對象的矢量中獲得另一個類的對象,然後調用該對象的方法。問題是,當我調用該方法,我得到一個未解決的外部符號問題,如:當調用一個對象的方法時,無法解析的外部符號

error LNK2019: unresolved external symbol "public: void __thiscall GameChar::draw(void)" ([email protected]@@QAEXXZ) referenced in function "public: void __thiscall Application::gameLoop(void)" ([email protected]@@QAEXXZ) 

,我打電話通知其他對象的方法是gameLoop()的方法,我稱之爲的draw()方法另一個對象。我已經檢查過其他類的所有方法都被定義了,因爲我讀到了沒有定義方法的問題。

+1

你是如何編譯它的?唯一可能出現的兩個問題是聲明瞭某些內容但未定義,或者您沒有編譯項目中的.cpp文件(這與第一次未定義的相同) – 2012-03-16 21:57:36

+0

可能重複的[ LNK2019錯誤C++無法解析的外部符號](http://stackoverflow.com/questions/5730135/lnk2019-error-c-unresolved-external-symbol) – 2012-03-16 21:58:59

+1

您需要顯示定義方法的代碼以及調用它的代碼。另外,這是什麼編譯器? – 2012-03-16 21:59:40

回答

0

你的問題是該函數已被聲明,但沒有實現。無論它是在同一個文件,.cpp文件還是庫中,函數的主體都需要在那裏,然後才能使用它。

由於hmjd指出,這一般能當你把

void draw() 
{ 
    ... 
} 

,而不是

void GameChar::draw() 
{ 
    ... 
} 

前者聲明瞭一個全局的功能,而後者範圍它的類GameChar發生。