我认为我需要在其中执行多维数组或向量来定义帐户和余额。比如我默认定义{acctnum = 44421,balance = 0},余额为0,然后我想定义另一个帐户{acctnum = 55531,balance =“”}。随着每一个我需要拿第一个账户存款并执行提款10然后存款6.然后去第二个存款3然后存款5.然后显示初始存款,然后提取后和第二次存款后的账户是在这些行动之后。
标题
#ifndef account_h_
#define account_h_
#include <iostream>
#include <string>
#include <account>
using std::account;
class account
{
public:
account();
account(const std::string acctnum);
~account();
//----------------------------------------------------
//account number
const std:string get_acctnum() const{
return m_acctnum;
}
//----------------------------------------------------
//deposit
void deposit(float amt){
m_balance += amt;
}
//----------------------------------------------------
//withdraw
void withdraw(float amt){
m_balance -= amt;
}
//----------------------------------------------------
//current balance
const double get_balance() const{
return m_balance;
})
//----------------------------------------------------
//display string
const std::string asString() const;
private:
//----------------------------------------------------
//account number
int m_acctnum;
//----------------------------------------------------
//balance
double m_balance;
//----------------------------------------------------
//after deposit or withdrawal
void inc(const double d) {
m_reading += d;
}
};
#endif
程序
#include <iostream>
#include <string>
#include <stdlib.h>
#include "account.h"
using namespace std;
//----------------------------------------------------
//bank account default balance
account::account(){
m_balance = 0;
m_acctnum = "???";
}
account::account(const std::string acctnum){
m_balance = 0;
m_acctnum = acctnum;
}
account::~account(){
}
//----------------------------------------------------
//deposit
void account::deposit(double amount){
balance = balance + amount;
}
//----------------------------------------------------
//withdraw
void account::withdraw(double amount){
if(amount < balance ){
std::cout << "Debit amount exceeded account balance."
<< amount << endl;
}
else if(amount < 0){
std::cout <<"The withdrawel you've enter is defined as negative."
<< amount << endl;
}
else{
balance = balance - amount;
}
}
//----------------------------------------------------
//get balance
double account::get_balance() const{
return balance;
}
//----------------------------------------------------
//display
const std::string account::asstring() const{
ostringstream oss;
oss << "Account Num: " << m_acctnum <<
" Balance: " << m_balance;
return oss.str();
}
测试程序这是我在创建程序时遇到问题的地方。我想我需要一个数组,可能是多维数组并且可以访问余额,所以我可以执行存款和取款?
#include <iostream>
#include <string>
#include "account.h"
void main(){
account::account[][2] = {
{44421, 20},
{55531, }
};
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2 ; ++col)
{
account::deposit[col]
}
}
}
答案 0 :(得分:0)
您的代码存在多个问题。
//account number
int m_acctnum;
您的班级成员是int
。
const std:string get_acctnum() const{
return m_acctnum;
}
account::account(const std::string acctnum){
m_balance = 0;
m_acctnum = acctnum;
}
但是你的方法认为它是std::string
。您无法将std::string
分配给int
。同样,您无法将int
直接转换为std::string
。
我确定您的编译器将所有这些都报告为错误。您是否了解编译器的错误消息?这是一个简单的问题,您认为以下代码是有效的吗?
int n="the rain in spain falls mainly in the plane";
当然不是,但这是你正在尝试做的事情,当然,编译器也不会为此感到高兴。
account::account[][2] = {
{44421, 20},
{55531, }
};
目前还不清楚这应该是什么。通过显式调用类的构造函数或使用类的默认构造函数来实例化类的每个实例;然后将其分配给变量。通过手动初始化私有类成员不会实例化类实例。
您的account
类有一个默认构造函数,以及一个带一个参数的构造函数。您的类没有任何带有两个参数的构造函数,因此这不是有效的初始化。
此外,通过给出类的名称和类实例的名称来构造类,而不是通过显式调用类的构造函数。
account::deposit[col]
account :: deposit()是一种类方法。它不是可以像这样调用的静态类函数。此外,使用括号而不是括号传递类方法或静态类函数的参数。
此外,deposit()方法采用的参数被描述为&#34;余额&#34;。它不是&#34;列号&#34;参数的类型。