2012-02-21 64 views
3
Fraction Fraction::pow (Fraction frac, int power) 
    { 
     Fraction temp; 
    temp.num = pow(frac.num, power); 
    temp.den = pow(frac.den, power); 

    return (temp); 
    } 
    // Assume that num and den are float and cmath is included 

期間pow需要floatint作爲輸入,並應給出float而是需要Fraction作爲輸入,並拋出一個錯誤的Fraction::pow,裏面的實例。如何重載調用自身的重載版本的函數?

+1

您可以發佈該類中所有'pow'函數的確切簽名,以及所有構造函數,複製賦值運算符和轉換運算符嗎? – Mat 2012-02-21 07:07:40

+0

顯示'pow'的第二個重載定義。 – hamstergene 2012-02-21 07:07:46

+0

正如@Mat所說的發佈類和函數定義,你的'Fraction'類很可能有一個用於隱式轉換的轉換構造函數,導致調用不正確的函數,以確定爲什麼會發生這種情況,您需要向我們展示細節Mat說。 – 2012-02-21 07:13:26

回答

3

你可以嘗試調用全局範圍pow功能(我猜是你想要的):

temp.num = ::pow(frac.num, power); 
temp.den = ::pow(frac.den, power); 

作用域運算符(::)什麼也沒有在其左側將調用全局範圍。當然,因爲你是包括<cmath>你應該也能夠給他們打電話std命名空間:

temp.num = std::pow(frac.num, power); 
temp.den = std::pow(frac.den, power);