2015-04-29 131 views
1

我得到fracMult之後和(I'm missing a constructor, destructor, or type conversion之前的錯誤。我不知道這是什麼意思。需要構造函數/析構函數/類型轉換錯誤

#include <cstdlib> 
#include <iostream> 
#include <cmath> 
#include <cstring> 

using namespace std; 

class fraction 
{ 
private: 
    int numerator; 
    int denom; 
    bool positive; 
public: 
fraction(); 
    fraction(int numerator, int denom, bool positive); 
    void inputFrac(); 
    void printFrac(); 
    fraction fracMult(fraction b); 
    fraction fracDiv(fraction b); 
    fraction fracAdd(fraction b); 
    fraction fracSub(fraction b); 
}; 

fraction f1, f2, fresult; 

int main(int argc, char** argv) { 

f1.inputFrac(); 
f2.inputFrac(); 

cout << "The result of a * b is: "; 
fresult = f1.fracMult(f2); 
fresult.printFrac(); 

    return 0; 
} 

void fraction::printFrac() 
{ 
    if(!positive){ 
     cout << "-"; 
    } 
cout << numerator << "/" << denom << endl; 
} 

void fraction::inputFrac() 
{ 
    string tempchar; 

    cout << "What is the numerator? "; 
    cin >> numerator; 
    cout << "What is the denominator? "; 
    cin >> denom; 
    cout << "Is the fraction positive? (Y or N): "; 
    cin >> tempchar; 

    while(tempchar != "Y" && tempchar != "N"){ 
     cout << "Please enter Y or N: "; 
     cin >> tempchar; 
    } 

    if(tempchar == "Y"){ 
     positive = true; 
    } 
    else{ 
     positive = false; 
    } 
} 

fraction::fracMult(f2){ 
    fresult.numerator = f1.numerator * f2.numerator; 
    fresult.denom = f1.denom * f2.denom; 
    if(f1.positive != f2.positive){ 
     fresult.positive = false; 
    } 
    return fresult; 
} 

fraction::fracDiv(){ 
} 

fraction::fracAdd(){ 
} 

fraction::fracSub(){ 
} 

我知道fracDiv,fracAdd和fracSub都是空的,我只是努力使fracMult工作的首位。

我對C++很陌生,所以有時候很小很明顯的錯誤仍然會讓我無法迴避。

回答

1

您需要在這些函數的實現中添加返回類型。您在實現中也缺少參數。

fraction fraction::fracDiv(fraction b){ 
// ^^^^     ^^^^^ 
} 

只有構造函數和析構函數實現可以省略返回類型。

// OK 
fraction::fraction(){ ... } 

// OK 
fraction::~fraction(){ ... } 
+0

當我在行首添加'fraction'時,它會告訴我'fraction fraction :: fracMult()'的main.cpp:81:10:error:原型不匹配對於4個單獨的Add,Sub,Div和Mult中的每一個,任何在class'fraction''和main.cpp:26:14:error:candidate中都是:fraction fraction :: fracMult(fraction)' –

+0

@EricBraunreiter,論據也必須加上。更新了我的答案。 –

+0

好的,解決了這個問題,但現在好像它不讓我初始化f1,f2和fresult分數。是否有某種方法需要初始化它們,因爲「分數」是一個類,而不是「分數f1,f2,fresult;」就像我在分數是結構時所做的那樣? (對不起,如果這些是愚蠢的問題 - 就像我說的,我仍然很新。) –

相關問題