Template Class wird nicht exportiert?
-
Noch eine Frage :
Ich habe eine Funktion T foo, in der ich eine Schleife durchlaufe und gegebenenfalls returne, aber dann geben nicht alle Pfade einen Wert zurück und so hab ich am Ende ein "return nullptr;", aber nullptr kann nicht zu T gecastet werden.
Wie vermeide ich jetzt die
not all control paths return a value
Warnung
-
Dann lass die Funktion void oder bool (als Fehlermeldung) zurückgeben und benutze einen Parameter für den Rückgabewert.
-
Das ändert daran ja nichts, ich kann ja nicht im Voraus wissen, was für einen typen T annimmt
-
RobthaR schrieb:
Das ändert daran ja nichts, ich kann ja nicht im Voraus wissen, was für einen typen T annimmt
Ich meine es so
template <typename T> bool getvalue(T& val) { if ( havevalue ) { val = value; return true; } else { return false; } }
-
Das ist natürlich ne Möglichkeit, oder ich machs mit nem throw Exception
-
Oder geb ein T* bzw. T^ zurück.
-
Und wenn als T eine ref class angegeben ist, z.B. String^, dann wäre der return ja String^^ ...
-
Ok, habs getestet, doppelte indirections sind da anscheinend nicht Möglich
-
Gib T() zurück
generic<typename T> T test(T x) { return T(); } int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); System::String ^t = test<System::String^>("Test"); return 0; }
A default instance of the type parameter may be created by using the () operator. For example:
T t = T();
where T is a type parameter in a generic class or method definition, initializes the variable to its default value. If T is a ref class it will be a null pointer; if T is a value class, the object is initialized to zero. This is called a default initializer.
-
Alles klar, vielen Dank an alle