首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R6025纯虚拟函数调用:什么是什么以及如何解决

R6025纯虚拟函数调用:什么是什么以及如何解决
EN

Stack Overflow用户
提问于 2012-06-29 21:13:08
回答 1查看 17.7K关注 0票数 1

的答案可以在这里找到:

有效C++摘录,第三版,斯科特·迈尔斯

网址:hmjd

请阅读那一页,这样你就能理解为什么会发生这种情况。你也知道为什么

代码语言:javascript
复制
        virtual void     OnRelease() = 0;

出自:

代码语言:javascript
复制
        virtual void     OnRelease(){};

会起作用但不是解决问题的正确方法。

原始问题

R6025:纯虚函数调用

代码语言:javascript
复制
#include <Windows.h>

// static lib
    //file.h
    class cBaseApplication
    {
    public:
        virtual          ~cBaseApplication(){ Release(); }
        virtual void     Release()
                         {

                             OnRelease();

                         };
        virtual void     OnRelease() = 0;
    }; // class cBaseApplication

    //file1.h
    class cApplication : public cBaseApplication
    {
    public:
        virtual void     OnRelease()
                         {

                             /* what the heck do something here */

                         };
    }; // class cApplication

// executable
    // file3.h
    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
    {

        cApplication* pApplication = new cApplication();

        /*...what the heck, do stuff...*/

        pApplication->Release();
        delete pApplication;      // R6025: pure virtual function call
        pApplication = NULL;

        return 0;

    }

在线上

代码语言:javascript
复制
delete pApplication; 

R6025发生,删除时会发生内存泄漏。删除指针引用R6025也会在“程序退出”时发生,此时cApplication应用程序将被销毁。

由于嘟嘟声,R6025吓到我了。

似乎我必须在两者之间做出选择,但我只是不想这样做,这里发生了什么?

你好,约翰

编辑:添加了一些代码,看起来Eran是对的,因为我在那里称之为虚拟函数。

编辑:添加到示例中,虚拟空OnLostDevice() = 0;。从抽象到ascoop的转变给出了一个即时的解决方案。开始阅读下面评论中的那一页,因为我觉得我还没有到那里。

编辑:在我得到答案之后,我就明白了自己的问题。所以我重写了这个问题,所以答案符合这个问题。

谢谢,约翰

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-29 21:22:45

不能在析构函数中调用构造函数中的虚拟函数。我在这里没有看到一个纯粹的虚拟函数,但是如果cBaseApplication::Release碰巧调用了一个函数,那么每次销毁一个cBaseApplication时都会得到这个错误。我不确定这就是问题所在,因为我没有所有的代码,但是您的代码需要这样的问题。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11269035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档