我对C ++很陌生,我想知道是否有任何方法可以复制构造函数,并且传递的参数有变化。 我需要识别正确的给定值(浮点数或整数),检查浮点数是否可以很好地转换为整数(例如1.0),如果我的值通过测试,则调用另一个接受两个整数的构造函数。
如果有人提出改善此解决方案的任何提示,那就太棒了。
Fraction(int n, int d) : numerator(n), denominator(d) {
simplify(n, d);
}
Fraction(float n, float d) {
if (!isInteger(n) && !isInteger(d)) {
throw invalid_argument("Fractions only accept real numbers.");
} else {
Fraction(int(n), int(d));
}
}
Fraction(int n, float d) {
if (!isInteger(n) && !isInteger(d)) {
throw invalid_argument("Fractions only accept real numbers.");
} else {
Fraction(int(n), int(d));
}
}
Fraction(float n, int d) {
if (!isInteger(n) && !isInteger(d)) {
throw invalid_argument("Fractions only accept real numbers.");
} else {
Fraction(int(n), int(d));
}
}
答案 0 :(得分:1)
那么你只能使用浮子ctor并测试你的参数 如果你只有两个ctors一个用于整数,一个用于浮点数,那么只有当两个数字都是int时才会调用ctor。否则将调用浮动ctor。