c++ - Object(this) != this 设置的 this 指针

标签 c++

我引擎的构造函数使用指向自身的指针 (this) 构造音频、视频和输入对象。然而,当我调试时,我看到我构造的所有类的 enginePtr 与调试器提供的 this 的值不同。

当我往里看时,我看到 pRender 的 enginePtr 与引擎有不同的值。其中大部分设置为 NULL,这会导致渲染崩溃。

这是我的引擎构造函数:

cEngine::cEngine( int flag ) {

    if ( !al_get_system_driver() ) {

        this->isRunning = true;

        al_init();

        // Uses DirectX by default, uncomment ALLEGRO_OPENGL for OpenGL.
        if ( flag == OPENGL_WINDOW || flag == OPENGL ) al_set_new_display_flags( ALLEGRO_RESIZABLE | ALLEGRO_OPENGL );
        else if ( flag == DIRECTX_WINDOW || flag == DIRECTX ) al_set_new_display_flags( ALLEGRO_RESIZABLE );
        else if ( flag == OPENGL_FULLSCREEN ) al_set_new_display_flags( ALLEGRO_FULLSCREEN | ALLEGRO_OPENGL );
        else if ( flag == DIRECTX_FULLSCREEN ) al_set_new_display_flags( ALLEGRO_FULLSCREEN );

        this->display = createDisplay( "Motherload C++", -1, -1, 640, 480 );

        srand( ( unsigned ) time(0) );

        pCam    = new cCam( this );
        pIO     = new cIO( this );
        pMap    = new cMap( this, setPoint( 50, 50 ), setPoint( 13, 20 ) ); // 13, 20
        pPlayer = new cPlayer( this );
        pAudio  = new cAudio( this );
        pRender = new cRender( this );
        pEvents = new cEvents( this );

    }
}

cRender 构造函数:

cRender::cRender( cEngine* pEngine ) {

    this->pPlayerLoc    = pPlayerLoc;
    this->BLACK         = al_map_rgb(30, 100, 200);
    this->needsRedraw   = false;
    this->pEngine       = pEngine;

    al_init_font_addon();
    al_init_ttf_addon();

    splitImages();
    //this->font = al_load_font( "C:/resource/gisha.ttf", 24, 0 );
    //this->img = al_load_bitmap( "C:/resource/rock.png" );
}

谢谢

最佳答案

这不太可能。你的代码在我看来在逻辑上没问题。相反或依靠调试器,尝试打印出“this”的值以及您存储在 pRenderer 中的任何内容。有时,使用优化标志,调试器无法正确显示变量值。

关于c++ - Object(this) != this 设置的 this 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4161138/

相关文章:

c++ - 使用大型整数对数据集有效地初始化 unordered_map

c++ - 向 node.js 添加 OpenCV C++ 附加组件的最基本示例

c++ - 网格中的 GTKMM 按钮

c++ - 特化一个成员函数而不是整个类

c++ - 为什么Clang会为引用和非空指针参数生成不同的代码?

c++ - 关于成员函数指针值的 Constexpr - 未定义的行为?

c++ - C++ 中是否存在 MOF 实现?

c++ - Lambda 没有正确捕获变量

c++ - 图像处理 - 这是一个 for 循环问题吗?

c++ - 切片无状态派生类是否安全?