C ++ Template Standardkonstruktor

8

Ich habe ein kleines Problem mit Vorlagen:

%Vor%

Wenn diese Funktion kein Ergebnis liefert, möchte ich ein gültiges Objekt zurückgeben, aber so leer wie möglich. Wenn ich es wie oben mache, bekomme ich die Warnung "ret kann in dieser Funktion nicht initialisiert sein". Try-Catch hilft nicht, die Warnung zu entfernen.

Gibt es dafür einen Weg wie das default Schlüsselwort in C #?

%Vor%

Danke!

    
opatut 10.08.2010, 01:13
quelle

1 Antwort

21

ret ist möglicherweise nicht initialisiert, weil T möglicherweise ein POD-Typ oder ein anderer Typ ist, der keine von Benutzern deklarierten Konstruktoren hat.

Sie können den Standardkonstruktor wie folgt aufrufen (und value-initialize jedes POD-Objekt):

%Vor%

oder, kurz gesagt,

%Vor%

Dies setzt voraus, dass T standardmäßig konstruierbar ist. Wenn Sie diese Funktion möglicherweise mit einem Typ instanziieren müssen, der nicht standardmäßig konstruierbar ist, können Sie den Fall "Standard" als Parameter verwenden. Zum Beispiel

%Vor%

Damit können Sie weiterhin Func() für Typen aufrufen, die standardmäßig konstruierbar sind, aber auch explizit einen Wert angeben, der für nicht vorhandene Typen zurückgegeben wird.

    
James McNellis 10.08.2010, 01:15
quelle