0

vector<float>STL ベクトルを aまたはとして作成したい状況がありますvector<complex<float> >。プログラムは、入力に基づいて実行時にデータ形式を決定します。

ただし、これは大量の if/else ステートメントなしでは不可能のようです。これが私がやろうとしていることです。明らかに、これは機能しません。これは、typedef が if/else に対してローカルであるためです。

if (INPUT_IS_REAL)
     typedef TYPE float;
else
     typedef TYPE complex<float>; 

vector v1<TYPE>;
vector v2<TYPE>;
 .....
4

2 に答える 2

3

型はコンパイル時に定義されます。実行中に型を変更することはできません。2 つの異なるデータ型を処理するには、2 つの異なるコードが必要です。どの入力を扱っているかがわかっている場合は、どちらを使用するかを決定します。

于 2012-08-15T15:18:09.810 に答える
3

考えられる解決策:

if (INPUT_IS_REAL)
    code_path<float>();
else
    code_path<complex<float>>();
于 2012-08-15T14:37:19.297 に答える