0

以下から、考えられるすべての、少なくとも 3 つのエラーを見つける必要があります。

template<typename A, typename B, typename C>
C myfunction(const A& a, const B& b)
{ 
   if ( a < b )  return (C) a;
   else return (C) b;
}

私の答えは

  1. typename A と B は、エラーを発生させる異なる型を持つことができます。さらに悪いことに、演算子 < は関数で定義されていません。

  2. typename C は A および B とは異なる場合があり、const で定義されている a、b オブジェクトに変更を加えます。

  3. typename A は整数型にすることができますが、整数型には定数参照を使用せず、オブジェクトにのみ使用します。

私の3番目の答えは間違っていました....

私の答えが間違っていた理由と、このテンプレートから発生する可能性のあるすべてのエラーを誰か説明できますか? 最初の 2 つの回答の功績は認められましたが、あまり好きではありません。誰もこれに対するより良い解決策を持っていますか?

ありがとう、

4

1 に答える 1

1

A から C または B から C へのキャストは、ポリモーフィックまたは互換性のある型である必要があります。整数参照で const を使用できます。

于 2013-04-26T01:03:42.250 に答える