0

我需要从下面找到所有可能的错误,至少三个错误。

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 可以是整数类型,但我们不使用整数类型的常量引用,我们只将它用于对象。

我的第三个答案是错误的......

任何人都可以解释为什么我的答案是错误的,以及这个模板可能出现的所有可能的错误吗?我得到了前两个答案的功劳,但我真的不喜欢它们。有人对此有更好的解决方案吗?

谢谢,

4

1 回答 1

1

从 A 到 C 或 B 到 C 的转换要么需要是多态的,要么是兼容的类型。您可以将 const 与整数引用一起使用。

于 2013-04-26T01:03:42.250 回答