對於C++我很陌生,我想知道是否有任何方法可以重複構造函數,並且傳遞參數的變體。 我需要確定正確的給定值(float或int),檢查float是否可以很好地轉換爲整數(例如1.0),並調用另一個構造函數,如果我的值通過測試,則接受兩個整數。在C++中用於不同參數的多個構造函數
如果任何人有任何關於改進這個解決方案的提示,那一般會很棒。
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));
}
}
如果您的編譯器支持它們,委託構造函數。 – user657267 2014-10-27 22:22:26
如果你只想支持整數值,爲什麼你想要一個選項,需要'浮動'? – 2014-10-27 22:22:49
你的邏輯對條件是錯誤的。另外,你爲什麼要檢查參數是整數?編譯器應該已經這樣做了。添加無用的消息,並拋出異常只會讓你的代碼更長。 – 2014-10-27 22:26:48