如何解决此链接错误

Posted

技术标签:

【中文标题】如何解决此链接错误【英文标题】:How to resolve this linking error 【发布时间】:2011-10-17 14:45:26 【问题描述】:

我有一个 A 类,它是一个抽象基类。(C++)。现在,我有两个继承自 A 的类 B 和 C;

我在 A 中有一个虚拟析构函数; A 类中的构造函数是受保护的。 现在,在 B 和 C 的构造函数中,我已经包含了对 A 的构造函数的调用。

B::B():A()

//do something

对于 C 也是如此

C::C():A()

//do something

现在,在编译时出现链接错误。

    B.obj : error LNK2019: unresolved external symbol "protected: __
thiscall A::A(void)" (??0A) referenced in function "protected: __thiscall B::B(void)" (??0B)

    C.obj : error LNK2001: unresolved external symbol "protected:
__thiscall A::A(void)" (??0A@XZ)
      Error.

请建议如何解决这个问题。

谢谢, 卡尔提克。

【问题讨论】:

发布完整代码。您没有向我们展示的代码中一定存在错误。 我不能:(。我不允许。 尝试构建一个最小的示例来重现您的问题。否则这里没有真正的问题。 【参考方案1】:

首先,实际上没有必要显式地“调用”基类构造函数。将自动为您调用基类的默认构造函数。

其次,正如@DeadMG 已经指出的那样,您收到的错误表明您明确声明了A::A() 构造函数,但忘记定义它。

【讨论】:

【参考方案2】:

这表明您在声明 A 时从未定义它的默认构造函数。

【讨论】:

@user815961:如果它“到位”,您将不会收到这些链接器错误。不,构造函数定义不是“就地”(无论您所说的“就地”是什么意思) 大家好,实际上,抽象基类(A)有一个构造函数。并将其从该抽象基类及其所有子类(B&C)中删除正在解决问题。是不是抽象基类不能有构造函数? ***.com/questions/1057221/…

以上是关于如何解决此链接错误的主要内容,如果未能解决你的问题,请参考以下文章

未解决的链接错误[关闭]

如何解决此错误您可能需要适当的加载程序来处理此文件类型

如何在 VS2019 的开发人员命令提示符中修复此链接器错误

如何解决此不和谐音乐机器人错误?

如何解决 Paypal 错误 - 您用于进入 PayPal 系统的链接无效。请查看链接并重试?

如何解决 React Native iOS 链接错误:: 'ReactNativeNavigation/ReactNativeNavigation.h' 文件未找到?