回 帖 发 新 帖 刷新版面

主题:编译出错了,但找不出问题所在

大家帮忙看看这个程序问题出在哪儿了,谢谢.
main部分:
#include<iostream>
#include"bankaccount.h"
using namespace std;
int main()
{
 bankaccount account1,account2;
 cout<<"start of test:\n";
 
 account1.set(123,99,3.0);
 cout<<"account1 inital statement:\n";
 account1.output(cout);

 account1.set(100,5.0);
 cout<<"account1 intigal statement:\n";
 account1.output(cout);

 account1.update();
 cout<<"account1 after uodate:\n";
 account1.output(cout);

 account2=account1;
 cout<<"account2:\n";
 account2.output(cout);
 return 0;
}
#include"bankaccount.h"
// bankaccount.h: interface for the bankaccount class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BANKACCOUNT_H__DEF2BADF_C38E_4467_AB58_C791B0B9AD11__INCLUDED_)
#define AFX_BANKACCOUNT_H__DEF2BADF_C38E_4467_AB58_C791B0B9AD11__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include<iostream>
class bankaccount    
{
public:
    void set(int dollars,int cents,double rate);
    void set(int dollars,double rate);
    void update();
    double get_balance();
    double get_rate();
    void output(ostream& outs);

    bankaccount();
    virtual ~bankaccount();

private:
    double balance;
    double interest_rate;
    double fraction(double percent);
};

#endif // !defined(AFX_BANKACCOUNT_H__DEF2BADF_C38E_4467_AB58_C791B0B9AD11__INCLUDED_)
bankaccount.cpp:
// bankaccount.cpp: implementation of the bankaccount class.
//
//////////////////////////////////////////////////////////////////////

#include "bankaccount.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

bankaccount::bankaccount()
{

}

bankaccount::~bankaccount()
{

}

void bankaccount::set(int dollars, int cents, double rate)
{
    if((dollars<0)||(cents<0)||(rate<0))
    {
        cout<<"illegal values for money or interest rate.\n";
        exit(1);
    }
    balance=dollars+0.01*cents;
    interest_rate=rate;
}
void bankaccount::set(int dollars,double rate)
{
    if((dollars<0)||(rate<0))
    {
        cout<<"illegal values for money or interest rate.\n";
        exit(1);
    }
    balance=dollars;
    interest_rate=rate;
}
void bankaccount::update()
{
     balance=balance+fraction(interest_rate)*balance;
}
double bankaccount::fraction(double percent_value)
{
    return (percent_value/100.0);
}
double bankaccount::get_balance()
{
    return balance;
}
double bankaccount::get_rate()
{
    return interest_rate;
}
void bankaccount::output(ostream& outs)
{
    outs.setf(ios::fixed);
    outs.setf(ios::showpoint);
    outs.precision(2);
    outs<<"account balance $"<<balance<<endl;
    outs<<"interest rate"<<interest_rate<<"%"<<endl;

}

问题主要存在于
main.cpp
d:\program files\microsoft visual studio\myprojects\project1\bankaccount.h(20) : error C2061: syntax error : identifier 'ostream'
d:\program files\microsoft visual studio\myprojects\project1\main.cpp(12) : error C2660: 'output' : function does not take 1 parameters
d:\program files\microsoft visual studio\myprojects\project1\main.cpp(16) : error C2660: 'output' : function does not take 1 parameters
d:\program files\microsoft visual studio\myprojects\project1\main.cpp(20) : error C2660: 'output' : function does not take 1 parameters
d:\program files\microsoft visual studio\myprojects\project1\main.cpp(24) : error C2660: 'output' : function does not take 1 parameters
执行 cl.exe 时出错.

main.obj - 1 error(s), 0 warning(s)

回复列表 (共4个回复)

沙发

问题应该出在#include<iostream>语句上。头文件后漏了.h。改为#include<iostream.h>试试。

板凳

这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:四三四八零零七一。另外,这个群里可以接项目。

3 楼


想用std名字空间中的ostream,就用不带.h的头文件,同时要加using namespace std;

带.h的头文件,ostream在全局名字空间。

两种方法都可以,为了与主函数统一,建议使用不带.h的头文件。

4 楼

谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册