関数のオーバーロードを回避し、テンプレートを使用してより汎用的な関数を書く方法はありますか?現在、私のコードは次のようになります。上記で異なる入力引数と異なる戻り型のテンプレートを使用する汎用関数
placement Detect::predict(Eigen::Array<double, rowSize, 1> &feature)
と
position Detect::predict(std::unordered_map<std::string, std::vector<double>> &feature)
、placement
とposition
は、さまざまなカテゴリとのENUMSです。
template
を使ってどうすればいいですか?
IMOあなたの機能でテンプレートを使用する方法はありません。 – FieryCod
だから私の理解を明確にするために、入力引数と戻り値の型はテンプレートを使うために同じでなければならないのですか? –
引数と戻り値の型はテンプレート引数と同じである必要はありませんが、両方の型を扱うことができる単一の関数を作成する単純な方法や優雅な方法はありません。テンプレート?どちらか一方または両方、あるいは両方?どのように実装を区別しますか? 2つの関数の間に共通のコードがある場合は、代わりに呼び出すことができる3つ目の関数に共通のコードを記述すると、ここではオーバーロードが最良の方法です。 –