错误:LNK2001:未解析的外部符号 C++。

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:未解析的外部符号“public: virtual long __thiscall Base::X()”(?X@Base@@UAEJI@Z)
我正在努力修复这个bug。有人能帮我解决这个问题吗?非常感谢。
2个回答

7

您是否在Base中实现了X()函数?如果没有,请实现该函数或将其定义为纯虚函数:

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

另外,您在Derived中对X()的定义似乎有误。您可能需要像这样做:
HRESULT Derived::X()
{
// definition of Derived here. 
}

是的,谢谢。我解决了链接错误。 :) 非常感谢您如此迅速的回复。 - codeLover

2

您从未定义函数X

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

你还需要为Derived::X()提供一个定义,因为它也是virtual的。


是的,谢谢,我解决了链接错误。 :) 非常感谢您如此迅速的回复。希望stackoverflow可以允许选择两个答案作为正确答案。 :) - codeLover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接