0

コマンドライン引数に応じてインスタンス化する必要があるテンプレート化されたクラスがあります。

私が考えるよりも良い方法があるはずです:

if (optionA == 1){
    if (optionB == 2){
        myclass <Option1, Option2, Option3> object;
    }
}
else if (optionA == 2){
 // a whole big if-else ladder
}

これでは、テンプレート化されたオブジェクトを if ステートメントの範囲外で使用することさえできません! ちなみに、オプションはすべてタグです

4

1 に答える 1

1

あなたの課題は、コンパイル時の決定 (オプション タイプの選択) を実行時データ (args) に基づいて行うことです。オプション コードをタグにマッピングする「解析ツリー」を生成するマクロ/テンプレート ソリューションを想像できます。しかし、これは、テンプレート化された型を生成するための組み合わせの爆発を引き起こし、コンパイル (およびおそらく実行時間) が遅くなります。別の方法は、各オプションにファクトリ メソッドを使用し、オプション オブジェクトを myclass コンストラクターに渡すことです。純粋なコンパイル時の生成ほど効率的ではありませんが、代替手段はありません。

于 2013-05-09T18:47:43.717 に答える