MFC虚函数设置不当导致连接错误

void CMy1Dlg::OnOK()
{
// TODO: Add extra validation here

CDialog::OnOK();

}
以上程序”CMy1Dlg::OnOK()“, ”CDialog::OnOK()“在vc++自动生成的类中,OnOK()前都加了virtual关键字,即virtual void OnOK(),但当删除CDialog::OnOK()前的virtual时,连接出现错误,其中CMy1Dlg继承于CDialog,即class CMy1Dlg:public CDialog
error LNK2001: unresolved external symbol "protected: void __thiscall CDialog::OnOK(void)"
怎么回事?

这是因为 virtual 关键字表明 CMy1Dlg::OnOK 和 CDialog::OnOK 都是虚函数,
并且当调用 CDialog::OnOK 时,实际上是调用了 CMy1Dlg 中重写的 OnOK 函数。
但是,如果删除了 virtual,则 CDialog::OnOK 不再是虚函数,
因此调用它时不会再查找重写的版本。
因此,编译器在链接时无法找到 CDialog::OnOK 函数的实现,导致 LNK2001 错误。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^