1

関数からビットマップを返すにはどうすればよいですか? このコードは機能しません: コンパイラ エラー

 Gdiplus::Bitmap create()
 {
       Gdiplus::Bitmap bitmap(10,10,PixelFormat32bppRGB);

       // fill image
       return bitmap;
 }

ポインターを返すと、メモリリークの可能性が生じるため、ポインターを返したくありません。(または、このメモリリークの可能性を回避する方法がある場合)

4

2 に答える 2

1

コードが必要な場合。これは、ポインタを戻す方法です。

Gdiplus::Bitmap* create()
{
    Gdiplus::Bitmap* bitmap = new Gdiplus::Bitmap(10,10,PixelFormat32bppRGB);

    // fill image
    return bitmap;
}

これはうまくいきませんか?

void create(Gdiplus::Bitmap& bitmap)
{
    bitmap = *(new Gdiplus::Bitmap(10,10,PixelFormat32bppRGB));
}

コンテキストは次のようになります

int main()
{
    Gdiplus::Bitmap bitmap; //ONLY WORKS IF IT HAS DEFAULT CONSTRUCTOR
    create(bitmap);
}

私は Gdiplus に詳しくないので、デフォルトのコンストラクターがないとうまくいきません。

于 2013-10-24T15:54:40.810 に答える