Моя среда тестирования: Visual Studio 2010 Ultimate.
ошибка, которую я получил:
main.cpp (39): ошибка C2352: «Account :: DepositAmt»: недопустимый вызов нестатической функции-члена
Я попытался изменить его на статические функции, но это только вызвало больше ошибок.
account.cpp (23): ошибка C2597: недопустимая ссылка на нестатический член ‘Account :: balance’
account.cpp (40): ошибка C3867: «Account :: balance»: вызов функции
список отсутствующих аргументов; использовать&Account :: balance ‘для создания указателя на
член
Я пытался исправить, используя предложения, пытаясь ссылаться, но с треском провалился.
цель, чтобы иметь возможность принять пользовательский ввод для начального баланса, а затем, если пользователь делает депозит, добавить его к балансу, если пользователь делает вывод, вычесть его, а затем распечатать окончательный баланс. я требуется создавать функции-члены
Все, что я хочу, — это выяснить, как этого добиться, не переходя на статические функции (если это вообще возможно).
Это мой код для
Account.h
#define ACCOUNT_H
#include <iostream>
#include <cstring>using namespace std;
class Account {
public:
//Object constructor
Account(char firstName[], char lastName[], char sinNumber[], double balance, int accountType, int transactions);
//Object operations
double DepositAmt(double amount);
double WithdrawAmt(double amount);
void PrintStatement();
double getFinalBalance(double fbal);
private:
//Object properties
char firstName[255];
char lastName[255];
char sinNumber[255];
double balance;
int accountType;
int transactions;
};
Account.cpp
#include "account.h"
//Initializing account entities
Account::Account(char fn[], char ln[], char sin[], double bal, int actype, int trans)
{
strcpy(firstName, fn);
strcpy(lastName, ln);
strcpy(sinNumber, sin);
balance = bal;
accountType = actype;
transactions = trans;
};
//Despoit amount to account of user, will return the balance now
double Account::DepositAmt(double amount)
{
if (amount < 0){
cout << "You cannot deposit a negative balance!" << endl;
return 0;
}
//this will be the balance now, and it adds balances, when we do a deposit
balance += amount;
return balance;
};
//Withdrawal amount from account of user
double Account::WithdrawAmt(double withdrawal)
{
//if the withdraw amount is 0 or in minus then return 0
if (withdrawal < 0)
{
cout<<"sorry we cannot process your withdraw at the moment, its either 0 or in minus"<<endl;
return 0;
};
//if what we are trying to withdraw is bigger than our balance, then it should fail too
if (withdrawal > balance)
{
cout<<"Sorry the withdraw amount exceeds the account balance"<<endl;
return 0;
};
//we deposited some amount in the deposite method, then we should have some money to withdraw
balance = balance - withdrawal;
return balance;
};//Get final balance after withdrawal
double Account::getFinalBalance(double fbal)
{
//this will return the remaining amount
return balance;
};
//Print remaining balance
void Account::PrintStatement()
{
cout<<"First Name: "<<firstName<<endl;
cout<<"Last Name: " <<lastName<<endl;
cout<<"SIN Number: " <<sinNumber<<endl;
cout<<"Initial Balance: "<<balance<<endl;
cout<<"Account Type: "<<accountType<<endl;
cout<<"Transactions: "<<transactions<<endl;
};
Главный.CPP
#include <iostream>
#include <string>
#include "account.h"
using namespace std;
int main()
{
char firstName[255];
char lastName[255];
char sinNumber[255];
double balance;
int accountType;
int transactions = 0;//Retrieve client information
cout << "Please fill out the information below for registration:" << endl;
cout << "Enter first name: ";
cin.getline(firstName, 255);
cout << "Enter last name: ";
cin.getline(lastName, 255);
cout << "Enter SIN number: ";
cin.getline(sinNumber, 255);
cout << "Please enter your initial balance: ";
cin >> balance;
cout << "Enter account type:\n-1 for Chequing\n-2 for Savings\n:::::: ";
cin >> accountType;
cout << "Please wait..." << endl;
//Creating the account
Account account(firstName, lastName, sinNumber, balance, accountType, transactions);
double deposit;
double withdraw;
double amount;
cout << "Amount to deposit: ";
cin >> &Account::DepositAmt(deposit);
cout << "Your new balance is: " << deposit << endl;}
Сначала вы должны получить пользовательский ввод для переменной, а затем передать его методу:
cin >> amount;
deposit = account.DepositAmt(amount);