没有错误编译错误的候选人

时间:2016-06-14 00:36:58

标签: c++ compiler-errors compiler-warnings

我正在尝试编译我的应用程序并且它一直运行到“不匹配'运算符<<'...不清楚程序的确切错误是什么似乎是因为他的对象配置正确到目前为止我可以看到。

#include <iostream>
#include <conio.h>
#include <cmath>
#include <stdexcept>

using namespace std;
class MortgageCalc
{
protected:
    float term;
public:
    void setData(float, float, float);
    float setTerm ();
    float monthly;
    float total;
    float interest;
        float setLoan(void);  //mutator
        float setIntrest(void);     //mutator
        float setYears(void);
    int years;
    float loan;
};

void MortgageCalc::setData(float l, float i, float y)
{
   loan = l;
   interest = i;
   years = y;
   setTerm();
}

float MortgageCalc::setTerm()
{  //simple interest calculation with power calc to establish whole number translation
     term = pow((1 + ((interest/100) / 12)), (12 * years));
     return term;
}

float MortgageCalc::setLoan(void)
{  //returns loan amt to private member
   return loan;
}

float MortgageCalc::setIntrest(void)
{  //returns interest amt to private member
    return interest;
}

float MortgageCalc::setYears(void)
{  //returns years to private member
   return years;
}

class mPayment : public MortgageCalc
{
public:
    int monthly()
    {
        return ((loan * ((interest/100) / 12) * term ) / (term - 1));
    }
};

class tPayment : public mPayment
{
public:
    int total()
    {
        return (monthly() * (years * 12));

    }
};

class iPayment : public tPayment
{
public:
    int plusInterest()
    {
        return (total() - loan);
    }
};

int main()
{
double loan(0), interest(0);
int years = 0;
MortgageCalc mort1;

    cout << "Enter the total loan amount on your mortgage loan: $";  //established loan variable
        cin >> loan;
    cout << "Enter the interest rate (in whole #'s only): ";  //establishes interest rate variable
        cin >> interest;
    cout << "Enter the length of the loan in years: "; //establishes term of payments
        cin >> years;
mort1.setData(loan, interest, years);

mPayment m;
       cout << "Monthly payment due is " << m.monthly() << "." << endl;

tPayment t;
        cout << "Total payment will be " << t.total() << "." << endl;

iPayment i;
        cout << "Total payment plus Interest will be " << i.plusInterest() << "." << endl;

return 0;
};

1 个答案:

答案 0 :(得分:3)

cout << "Total payment plus Interest will be " << i.plusInterest << "." << endl;

plusInterest是一个类方法指针。不出所料,std::ostream无法理解如何处理类方法指针,并正确地表达其强烈的反对意见,这是一个荒谬的命题,它知道如何处理一些奇怪的类的方法指针。

你可能想写:

cout << "Total payment plus Interest will be " << i.plusInterest() << "." << endl;

现在,这是一个正确的函数调用,返回一个int,而std::ostream现在很高兴接受这个int,并用它来做它的魔力。