多くの異なる型を受け入れる関数、例えばdoubleとcomplexを記述したいと思います。私はまた、型が複素数であるときにprint double値を、その型が複素数であるときに実数部と虚数部を出力したいというメンバを出力したい。異なるタイプのメンバを出力する関数
テンプレートを使用すると、実数部と虚数部を持つことができないため、エラーが発生します。
これは動作しません
template<class T>
void univ_print(T t)
{
if(typeid(T)==typeid(double))
printf("%f\n",t);
else if(typeid(T)==typeid(complex))
printf("%f\t%f\n",t.real, t.imag);
}
言います。だから私はどのように私が望む効果を得ることができます。
ありがとうございます!
を書くことができます。 (例えば、 'univ_float(double)'と 'univ_float(complex)'を持っています)テンプレートは実際に扱うことができるタイプの束を持っている場合、あるいは大部分は同じものです。 /または特定の過負荷。ここで実際に何を達成しようとしていますか? – cdhowie
@cdhowie:良いアイデア、ありがとう!それが私が望むものです。 –
表示したいほとんどの型に対して 'basic_ostream :: operator <<'がすでに定義されている場合、なぜあなたは 'printf'を使用していますか?追加の要件は 'univ_print'を特化することで処理できます。 – paddy