Это мой заголовочный файл, который состоит из класса и его функций. Я считаю, что я не объявил функции правильно, поэтому кто-то может указать, где мои ошибки? Большое спасибо! Здесь должна быть какая-то ошибка новичка, я немного новичок в C ++.
using namespace std;class bankAccount
{
public:
int accNo;
int password;
double balance;
double withdrawamt;
double depositamt;
char name[20];
char address[40];
char username[10];
public:
double checkbalance();
double deposit();
double withdraw();
};
bankAccount::withdraw()
{
cout << "Enter Withdraw amount: ";
cin >> withdrawamt;
if (balance > withdrawamt)
balance = (balance - withdrawamt);
}
У вас нет типа возврата в вашей функции вывода. Так должно быть: double bankAccount::withdraw()
Вместо bankAccount::withdraw()
Проверьте прототипы функций в вашем заголовке и коды ошибок вашего компилятора. Например, копирование-вставка в ideone дает ответ сразу:
prog.cpp: 25: 23: ошибка: ISO C ++ запрещает объявление «изъятия» без типа [-fpermissive] prog.cpp: 25: 1: ошибка: прототип для «int bankAccount ::draw ()» не соответствует ни одному в классе «bankAccount»
prog.cpp:
21:16: ошибка: кандидат: двойной банкАкаунт :: снять ()
Удачи
Редактировать:
Вот альтернативная реализация, обратите внимание, что я оставил в именах и паролях, но на самом деле они должны быть перемещены в разные классы:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class bankAccount
{
public:
int accNo;
int password;
vector<string> name;
vector<string> address;
vector<string> username;
private:
double balance;
public:
bankAccount(double deposit) : balance(deposit) {}
double checkBalance() { return balance; }
void deposit(double amount);
void withdraw(double amount);
};
void bankAccount::deposit(double amount)
{
balance += amount;
}
void bankAccount::withdraw(double amount)
{
if (balance > amount)
balance = (balance - amount);
}
int main(int argc, char* argv[])
{
bankAccount someOnesAccount = bankAccount(20.0);
someOnesAccount.deposit(30);
someOnesAccount.withdraw(15);
cout << someOnesAccount.checkBalance();
return 0;
}
Я надеюсь, что это немного более полезно. Я прошу прощения за плохой ответ раньше. Также обратите внимание, что в этом коде многое еще предстоит улучшить.
Если это все в заголовочном файле, избегайте использования using namespace std;
Вы можете поместить реализацию функции в исходный файл, а затем, когда вы используете cout и cin, которым требуется стандартное пространство имен, вам не понадобится использование в заголовке.
соображения в вашей программе:
double withdraw();
объявляйте с возвращаемым типом, но определение вашей функции не возвращает никакого двойного значения.
Ваше определение функции не определяется с типом возвращаемого значения double bankAccount::withdraw()
как ваше заявление.
Так что, если ваша функция не предполагает возврата, определите и объявите оба места, используйте void
как тип возврата. если вам нужно что-то вернуть, используйте тот же тип возврата в define и Объявите и убедитесь, что вы вернули значение.
Обязательно инициализируйте переменные-члены перед использованием (возможно, внутри конструктора).
Дополнительно рекомендуем вам следовать этому уроку: http://www.cplusplus.com/doc/tutorial/
так как ваш метод возвращает «двойной«значение т.е. остаток средств в этом случае вы должны включить тип возвращаемого значения в синтаксис ur, когда вы пишете определение функцииdraw ().
Вот исправленная строка кода.
double bankAccount::withdraw()
{
---
}