感谢您的帮助,我能够总结出以下解决方案
如果我错了请纠正我
问:至少解释三件可能出错的事情
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;
}
我的回答如下。
如果我把它们都做好了,请告诉我。
< 运算符未定义,因此我们无法将两个对象与 < 运算符进行比较
A 和 B 的类型可以不同,并且没有为此定义 < 运算符
如果 C 具有与 A 或 B 不同的类型,则会发生类型转换,从而更改定义为常量的 a 或 b
不能保证从 A 或 B 到 C 的类型转换,因为未定义转换构造函数。
未定义 A 和 B 的复制构造函数。因此,我们只是返回浅拷贝的。既然是浅拷贝,那么浅拷贝是可以改变的,原本应该不变的拷贝也可以改变。
谢谢,