提问人: 提问时间:4/26/2013 更新时间:4/26/2013 访问量:94
不同类型的 C++ 模板错误
C++ Template Errors with different types
问:
我需要从以下内容中找到所有可能的错误,至少三个错误。
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;
}
我的回答是
typename A 和 B 可能具有不同的类型,这些类型会出错,更糟糕的是,函数中未定义运算符<。
typename C 可以不同于 A 和 B,然后它会对 a、b 对象进行更改,这些对象被定义为 const
typename A 可以是整数类型,但我们不对整数类型使用常量引用,我们只将其用于对象。
我的第三个答案是错误的......
谁能解释为什么我的答案是错误的以及这个模板可能发生的所有错误?我得到了前两个答案的赞誉,但我真的不喜欢它们。有人对此有更好的解决方案吗?
谢谢
答:
1赞
The Floating Brain
4/26/2013
#1
从 A 到 C 或 B 到 C 的强制转换要么是多态的,要么是兼容的。您可以将 const 与整数引用一起使用。
评论