调用对象方法时未解析的外部符号

时间:2012-03-16 21:54:18

标签: c++

我有类,在其中一个方法中,我从一个对象向量中获取另一个类的对象,然后调用该对象的方法。问题是,当我调用该方法时,我得到一个未解决的外部符号问题,如下所示:

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

我调用另一个对象的方法的方法是gameLoop(),我调用另一个对象的draw()方法。我已经检查了其他类的所有方法都已定义,因为我读到没有定义方法通常是问题。

2 个答案:

答案 0 :(得分:0)

您的问题是该功能已声明但未实现。无论是在同一个文件,.cpp文件还是库中,函数体都需要存在才能使用它。

正如hmjd指出的那样,这通常会在你提出

时发生
void draw()
{
    ...
}

而不是

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

前者声明一个全局函数,而后一个函数将其范围扩展到类GameChar

答案 1 :(得分:0)

另一件需要注意的事情;确保您的 .cpp 文件确实出现在您的项目文件中;昨晚我无法找出一个愚蠢的链接器错误,我只是检查了我的项目,显然我从未添加过必要的 .cpp 文件(它们存在于磁盘上,但在项目中丢失了)。很容易忽略这一点,所以请注意。