型をマップする必要がある2つのシステムがあります。ソースデータフィールド(数値、文字または文字列)はすべて文字列オブジェクトとして格納されます。宛先システムは、各データフィールドの基礎となるタイプの異なるデータタイプを必要とし、このマッピングを動的に行う必要があります。異なるテンプレート引数に基づいて異なるデータ型に変換する
基本的に、各データフィールドに対して、実際のフィールド文字列 's'と基になるデータの型 'type'があり、 'type'に基づいて 'dest'型に変換しようとしています。 。私はテンプレートとテンプレート定数を使ってこれをやり遂げることができます。
は、私が持っている現在の試みは以下の通りであるが、これは矛盾する戻り値の型が原因でコンパイルされません。だから私は誰にもお勧めします
string mapped = returnDifferentTypes<string, 1>()
or
int mapped = returnDifferentTypes<int, 2>()
のようなものを呼び出してきた
template<class CLASSTYPE, int CLASSID>
CLASSTYPE returnDifferentTypes()
{
using namespace std;
if (CLASSID == 1) // 1 = "string"
return std::string("returned string");
if (CLASSID == 2) // 2 = int
return 123;
if (CLASSID == 3) // 3 = double
return 123.123;
}
これを行うスマータークリーナーの方法?理想的には、マップする型を表す文字列だけで適切な戻り値の型を返そうとしています。前もって感謝します。
+1うわー、私が考えていない良いオプションがたくさんあります。私は最後のものが一番だと思います。 –
+1戻り値の型を決定するために関数に渡されたパラメータをキーにしたいので、これは素晴らしいことです。 – user944775