我知道有很多类似于我的链接错误问题,但我无法用任何响应修复它。我已经确保添加正确的范围解析运算符并给出构造函数和析构函数体,但错误仍然存在。任何人都可以给我一个提示,“这已经得到了答案”吗?
Xx.obj : error LNK2019: unresolved external symbol "public: __thiscall Y::Y(void)" (??0Yy@@QAE@XZ) referenced in function _main
这是相关代码:
#include <iostream>
class Xx
{
X::X() {};
X::~X() {};
};
class Y : public X
{
public: //added public
Y::Y();
Y::~Y();
};
int main()
{
X *x = new Y;
Y *y = new Y; //turned new Y to new X
delete &x; //added deletes
delete &y; //added deletes
return 0;
}
答案 0 :(得分:2)
您需要将构造函数定义为Yy
。
你会注意到Xx
你已经定义了你的构造函数,如下所示:
Xx::Xx() {};
花括号是方法的主体(或定义)。您对Yy
的构造函数的声明如下所示:
Yy::Yy();
你错过了自己的身体(基于你提供的代码),我想你可能想要从你的Xx
课程中遵循相同的模式。只需将其更改为以下代码:
Yy::Yy() {};
也就是说,您还缺少析构函数的定义(在Yy
中以[{1}}为~
声明的方法)Yy
。