解决 main 中的 LNK2019 错误

Resolving a LNK2019 error in main

我知道有很多与我类似的链接错误问题,但我无法通过任何回复修复它。我已确保添加正确的范围解析运算符并提供构造函数和析构函数主体,但错误仍然存​​在。除了 "this has already been answered",还有谁能给我提示吗?

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;
}

您需要将构造函数定义为Yy

您会注意到 Xx 您已按如下方式定义构造函数:

Xx::Xx() {};

大括号是方法的body(或定义)。 Yy 的构造函数声明如下所示:

Yy::Yy();

您缺少 body(根据您提供的代码),我假设您可能希望遵循 Xx class 中的相同模式。只需将其更改为以下代码:

Yy::Yy() {};

也就是说,您还缺少 Yy.

的析构函数定义(在 Yy 中声明的以 ~ 开头的方法)