Template mit optionalen Template-Parametern
-
Hallo!
Ich schreibe ein Template, das 4 Template-Parameter bekommt. Nun soll einer davon in gewisser Weise optional sein (geht wahrscheinlich nicht direkt - die Frage ist nur wie ich das Problem umgehen kann).
Also, ich habe dieses Template:
template<class T, int32 rows, int32 cols, T defaultValue> class Matrix{ }
Es wird also eine Matrix mit einer bestimmten Zeilen- und Spaltenanzahl angelegt. Die Elemente sind von einem bestimmten Typ T und bekommen einen Default-Wert.
Das Problem betrifft nun den Copy-Construktor:
Matrix(const Matrix<T, rows, cols, defaultValue>& matrix2){ }
Hier muss ich ebenfalls einen Default-Wert angeben. Dabei wäre es doch kein Problem, dass man einen Typ, der mit Default-Wert 1.0 angelegt wurde, einem Typ mit Default-Wert 0.0 zuweist.
Hat jemand eine Idee was ich da machen kann oder muss ich auf den Default-Wert verzichten?
Danke!
mfg
-
defaultvalue ist bei dir ein Typ, da muss nur der Typ übereinstimmen, wo ist das problem?
-
ein template ctor oder ein konvertierungs-operator (eher schlecht) lösen das problem:
template<T otherDefaultValue> Matrix(const Matrix<T, rows, cols, otherDefaultValue>& matrix2) { /* ... */ }
wenn ein selbstdefinierter copy-ctor erforderlich ist, so musst du ihn trotzdem zusätzlich definieren, denn ein template ctor ist niemals ein copy-ctor.