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 #?
Danke!
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
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.
Tags und Links c++ constructor templates default keyword