C ++模板错误具有不同类型

时间:2013-04-26 00:56:41

标签: c++ templates memory-management casting rule-of-three

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

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可以有不同的类型产生错误,更糟糕的是运营商&lt;未在函数中定义。

  2. typename C可以与A和B不同,然后对a,b对象进行更改,这些对象定义为const

  3. typename A可以是整数类型,但我们不对整数类型使用常量引用,我们只将它用于对象。

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

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

    谢谢,

1 个答案:

答案 0 :(得分:1)

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