可変引数リストを処理するためのタイプの種類を保存します
-
22-09-2019 - |
質問
はの線に沿って何かをすることは可能です
type t = int;//this would be a function which identifies what type the next argument is
if( t == int )
printf( "%d", va_arg( theva_list, t ) );
比較的些細な方法で、?タイプを保持することができ、私が知っている唯一のオブジェクトがTYPE_INFOであり、私はこの方法でそれを使用する方法を考え出すことはできません。
おかげで、 パトリック
解決
一般的に、いや、話します。種類は本当にコンパイル時など、操作、保存することができます。あなたは、実行時に何かをしたい場合は、(むしろ毛深いメタプログラミングを経由して通常)に変換する必要がある種の値に種類(例えば、列挙)。
「タイプのスイッチ」の試みと可変引数リストの組み合わせを約列車のクラッシュのようなサウンドを - あなたは本当にここ達成しようとしているもののやや高いレベルの記述を与えた場合は、おそらくそれは良いだろう起こる...
他のヒント
ないと思うかもしれない方法インチ「INT」のようなタイプは、コンパイルタイプで評価されています。あなたは、実行時にタイプを評価したい。
おそらくあなたは「トン」参照機能、または仮想関数、各タイプごとに1つを持っているクラスのインスタンスを作りたいです。基本的に次のコマンドをフォーマットすることができ、異なる種類に、コマンド対応の異なるインスタンス「の値をフォーマット」であるコマンドパターンを、欲しいます。
用途特化ます:
void smart_print(int t)
{
printf("%d", i);
}
void smart_print(double f)
{
printf("%g", f);
}
しかし、テンプレートの助けを借りて、あなたはまた、予想される関数へのポインタを解決することができ、種類の識別子としてそう御馳走ポインタとは、
結果を希望しまいますあなたは<<
と>>
演算子は、ストリームクラス(例えばCOUTとCIN)のためにどのように動作するかを確認する必要があります。おそらく、それはあなたの問題を解決する方法についてのアイデアを与えるだろう - 。すなわち、オーバーロード関数を
所属していません StackOverflow