Delegate Konstruktor C ++

Mache ich das richtig? Ich versuche zu delegieren, eine C++ - Klasse Konstruktor, da es im Grunde den gleichen code zu wiederholen 3 mal.. ich lese-bis auf C++, x11 und gelesen, dass g++ 4.7.2 erlaubt, aber ich bin mir nicht sicher, ob ich alles richtig machen:

Bitmap::Bitmap(HBITMAP Bmp)
{
   //Construct some bitmap stuff..
}

Bitmap::Bitmap(WORD ResourceID)
{
   HBITMAP BMP = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED);

   Bitmap(BMP);   //Delegates to the above constructor? Or does this create a temporary?
}

ODER muss ich tun:

Bitmap::Bitmap(HBITMAP Bmp)
{
   //Construct some bitmap stuff..
}

Bitmap::Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED))
{
}
Kommentar zu dem Problem
Die zweite ist die richtige. Tut Sie es nicht kompilieren? Kommentarautor: chris
Beide kompilieren. Ich Frage mich nur, wenn ich das benötigte Initialisierungs-Liste version oder wenn das erste ist akzeptabel. Kommentarautor: Brandon
Ah, ich sehe dein dilemma. Das erste erstellt ein Unbenanntes Objekt und hat nichts mit es, ähnlich wie bei int(5); würde. Kommentarautor: chris
Tatsächlich, das erste Beispiel sollte nicht kompiliert werden, da " Bitmap(BMP); deklariert eine lokale variable mit dem Namen BMP vom Typ Bitmap. Es bedeutet nicht, erstellen Sie eine temporäre, Unbenannte Objekte. Es sollte sich in einer definition mehrere Fehler da BMP existiert bereits (Typ HBITMAP). Außerdem, Bitmap ist erforderlich, um eine leere/Standard/standard Konstruktor für diese Linie werden kompilierbar. Kommentarautor: Pixelchemist
@Pixelchemist Was redest du.. Bitmap(BMP); definitiv erklärt ein temporäres Objekt vom Typ Bitmap mit BMP als parameter. Dieser code wurde tatsächlich kompiliert, an die Zeit der post. Ich war neugierig und fragte, was es tut. Kommentarautor: Brandon

InformationsquelleAutor der Frage Brandon | 2012-12-19

Schreibe einen Kommentar