相关疑难解决方法(0)

复制构造函数未被调用

我有一个类在堆上分配内存然后析构函数释放它.我的拷贝构造函数由于某种原因从未被调用过,我不明白为什么.这是我的实现:

 AguiBitmap::AguiBitmap( const AguiBitmap &bmp )
    {

        this->nativeBitmapPtr = al_clone_bitmap(bmp.nativeBitmapPtr);
    }

    AguiBitmap::AguiBitmap( char *filename )
    {

        if(!filename)
        {
            nativeBitmapPtr = 0;
            return;
        }

        nativeBitmapPtr = al_load_bitmap(filename);

        if(nativeBitmapPtr)
        {

            width = al_get_bitmap_width(nativeBitmapPtr);
            height = al_get_bitmap_height(nativeBitmapPtr);
        }
        else
        {
            width = 0;
            height = 0;
        }
    }




    ALLEGRO_BITMAP* AguiBitmap::getBitmap() const
    {
        return nativeBitmapPtr;
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我做类似的事情时:

AguiBitmap bitmap;
bitmap = AguiBitmap("somepath");
Run Code Online (Sandbox Code Playgroud)

永远不会调用复制构造函数代码(设置断点).因此,当临时对象被破坏时,我在临时对象的重建对象中具有无效指针的问题变得无效.

我该怎么做才能调用我的拷贝构造函数?

谢谢

c++

2
推荐指数
2
解决办法
1413
查看次数

标签 统计

c++ ×1