0

助けてくれてありがとう、私は次の解決策を要約することができました

私が間違っている場合は修正してください

Q. うまくいかない可能性があることを少なくとも 3 つ説明してください

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

私の答えは次のとおりです。

大丈夫かどうか教えてください。

  1. < 演算子が定義されていないため、2 つのオブジェクトを < 演算子で比較することはできません

  2. A と B の型は異なる場合があり、そのために < 演算子は定義されていません

  3. C の型が A または B とは異なる場合、定数として定義されている a または b を変更する型キャストが発生します。

  4. 変換コンストラクターが定義されていないため、A または B から C への型キャストは保証されません。

  5. A と B のコピー コンストラクターが定義されていません。したがって、浅くコピーされたものを返すだけです。浅いコピーなので、浅いコピーを変更することができ、一定であるはずの元のコピーも変更することができます。

ありがとう、

4

1 に答える 1