2012-03-16 11 views
0

私はクラスを持ち、そのメソッドの1つでは、オブジェクトのベクトルから別のクラスのオブジェクトを取得し、そのオブジェクトのメソッドを呼び出します。問題は、私はそのメソッドを呼び出したとき、私はこのように、未解決の外部シンボルの問題を取得することです:オブジェクトのメソッドを呼び出すときに未解決の外部シンボル

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ファイルをコンパイルしていないことです(これは最初に定義されていないものと同じです) –

+0

[ LNK2019エラーC++の未解決の外部シンボル](0120-919-03-J) –

+1

メソッドとそれを呼び出すコードを定義するコードを表示する必要があります。また、どのようなコンパイラですか? –

答えて

0

問題は、関数が宣言されていても実装されていないことです。同じファイル、.cppファイル、またはライブラリのいずれであろうと、関数の本体は、使用する前にそこに存在する必要があります。

hmjdが指摘したように、後者はクラスGameCharにそれをスコープのに対し、あなたは

void draw() 
{ 
    ... 
} 

代わりの

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

を入れたときに、これは一般的に発生する可能性が前者は、グローバル関数を宣言します。