2
データを含むいくつかのファイルと、ファイルのデータ型を認識できる関数peekType()
があります。さまざまな機能は、データ型がどのようなものになるかによって異なります。考慮するファイルの数をハードコードするべきではありません。テンプレート:適切なパラメータが推定されるまで再帰
私は関数にファイル名のリストを渡し、その定義が何らかの基底の場合と一致するまでそれらのファイル名を再帰的にポップすると考えました。これと同じように:
私は間違っているつもりですcannot convert ‘args#0’ (type ‘std::vector<double>’) to type ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’
:
//Base case
template<class tA, class tB>
int PerformAlgorithm(std::vector<tA> a, std::vector<tB>){
//Do stuff
}
//Recursive part
template<typename... Arguments >
int PerformAlgorithm(std::string inputfile, Arguments ... args){
switch(peekType(inputfile)){
case TYPE_BYTE: {
std::vector<uint8_t> arr;
return PerformAlgorithm(args..., arr);
}
case TYPE_FLOAT: {
std::vector<double> arr;
return PerformAlgorithm(args..., arr);
}
default:
std::cerr<<"Unrecognised type!"<<std::endl;
return -1;
}
}
PerformAlgorithm("fileA", "fileB");
残念ながら、上記のような問題をもたらす、基本ケースに到達したことがありませんか?
また、私はテンプレートmetaprogramming factorialの例に基づいて作成しました。
私は同様のシナリオを再現しました。 –
[同様のシナリオ](https://ideone.com/pfz9Yg)それは役に立つかもしれない –
ありがとう、@BiagioFesta:私はそれを見てみましょう:それは素敵なMWEです! (PRNGが悪用される方法を除いて) – Richard