如何解决此链接错误

How to resolve this linking error

本文关键字:链接 错误 解决 何解决      更新时间:2023-10-16

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

在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.

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

谢谢,Karhtik .

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

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

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