我有一个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。
答案 0 :(得分:0)
这表明你在声明它时从未定义过A的默认构造函数。
答案 1 :(得分:0)
首先,实际上没有必要明确地“调用”基类构造函数。将自动为您调用基类的默认构造函数。
其次,正如@DeadMG已经注意到的那样,您得到的错误表明您明确声明了A::A()
构造函数,但忘记定义它。