Gibt es eine Möglichkeit, Funktionsüberladung zu vermeiden und eine generischere Funktion mithilfe der Vorlage zu schreiben? Derzeit sieht mein Code wie folgt aus:Eine generische Funktion, die Vorlagen mit unterschiedlichen Eingabeargumenten und unterschiedlichen Rückgabetypen verwendet
placement Detect::predict(Eigen::Array<double, rowSize, 1> &feature)
und
position Detect::predict(std::unordered_map<std::string, std::vector<double>> &feature)
Im obigen placement
und position
sind ENUMS von mit verschiedenen Kategorien.
Wie kann ich dies mit template
schreiben?
IMO gibt es keine Möglichkeit, die Vorlage in Ihren Funktionen zu verwenden. – FieryCod
Ok. Um mein Verständnis zu klären, sollten die Eingabeargumente und der Rückgabetyp identisch sein, um Vorlagen zu verwenden. –
Nein, die Argument- und Rückgabetypen müssen nicht mit dem Template-Argument identisch sein, aber es gibt einfach keine einfache oder elegante Möglichkeit, eine einzelne Funktion zu erstellen, die beide Fälle behandeln kann, welcher der Typen (return oder argument) sein sollte gestempelt? Der eine oder der andere oder beides? Wie würden Sie zwischen den Implementierungen unterscheiden? Überladen ist der beste Weg hier, wie ich es sehe, wenn Code zwischen den beiden Funktionen gemeinsam ist, setzen Sie diesen allgemeinen Code in eine dritte Funktion, die Sie stattdessen aufrufen können. –