如何解决此链接错误

时间:2011-08-01 16:40:50

标签: c++ dynamic-linking

我有一个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.

请建议如何解决此问题。

谢谢, Karhtik。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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