5

在我之前编译良好的 VC++ 代码中,我添加了一个函数 X(),如下所示:

In the file BaseCollection.h
class Base
{
// code
virtual HRESULT X();
//code
};


IN the file DerivedCollection.h
class Derived:public Base
{
    HRESULT X();

}

In the file DerivedCollection.cpp
HRESULT Derived::X
{
// definition of Derived here. 
}

已将头文件也正确包含在 .cpp 文件中。但我仍然不明白我收到链接错误的原因是什么:

错误 LNK2001:未解析的外部符号“公共:虚拟长 __thiscall Base::X()”(?X@Base@@UAEJI@Z)

我真的很努力修复这个错误。任何人都可以帮助我解决这个问题。提前非常感谢。

4

2 回答 2

7

你实施X()Base吗?你需要这样做,或者让它成为纯虚拟的:

class Base
{
// code
virtual HRESULT X() = 0; //pure virtual. Base doesn't need to implement it.
//code
};

此外,您对X()in的定义Derived看起来是错误的。你可能需要这样的东西:

HRESULT Derived::X()
{
// definition of Derived here. 
}
于 2012-04-23T11:07:08.120 回答
2

你永远不会定义函数X

HRESULT Base::X()
{
// definition of X 
}

你还需要一个定义,Derived::X()因为那也是virtual.

于 2012-04-23T11:07:27.277 回答