0

这是我的头文件,它由一个类及其函数组成。我相信我没有正确声明函数,所以有人可以指出我的错误在哪里吗?非常感谢!这里肯定有一些菜鸟错误,我对 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);     
}
4

4 回答 4

2

您的提款函数中没有返回类型。它应该是:double bankAccount::withdraw()

代替bankAccount::withdraw()

检查头文件中的函数原型和编译器的错误代码。例如,复制粘贴到ideone会立即给出答案:

prog.cpp:25:23:错误:ISO C++ 禁止声明没有类型的“withdraw”[-fpermissive] prog.cpp:25:1:错误:“int bankAccount::withdraw()”的原型不匹配任何在“bankAccount”类 prog.cpp:21:16:错误:候选人是:双 bankAccount::withdraw()

祝你好运

编辑:

  1. 我忘了明确指出您还应该在您的withdraw 方法中添加一个return 语句。
  2. 您应该问自己是否真的想使用静态数组来存储姓名、地址和用户名。我的两分钱是为用户创建一个单独的类,因为地址在逻辑上不属于银行账户(反正不属于我)。
  3. 存款应该作为一个参数作为参数,并返回无效。
  4. 您不需要为提款金额和存款金额设置成员变量。使它们成为局部变量,或者更好地将它们作为参数传递给您的方法,如下面的代码所示。

这是一个替代实现,请注意我留下了名称和密码,但实际上这些应该移动到不同的类:

#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;
}

我希望这更有帮助。我为之前的错误答案道歉。另外,请注意,此代码仍有很多需要改进的地方。

于 2013-05-23T09:01:35.190 回答
1

如果这些都在头文件中,请避免使用using namespace std; 您可以将函数实现放入源文件中,然后当您使用需要标准命名空间的 cout 和 cin 时,您将不需要在头文件中使用 using。

于 2013-05-23T09:45:10.953 回答
0

程序中的注意事项:

  1. double withdraw();声明返回类型,但您的函数定义不返回任何双精度值。

  2. 您的函数定义没有将返回类型定义为 doublebankAccount::withdraw()作为您的声明。

  3. 因此,如果您的函数不打算返回定义并声明两个地方都void用作返回类型。如果您需要返回任何东西,请在定义和声明中使用相同的返回类型,并确保返回一个值。

  4. 确保在使用前初始化成员变量(可能在构造函数内部)。

另外建议您放松本教程:http ://www.cplusplus.com/doc/tutorial/

于 2013-05-23T09:09:00.677 回答
0

因为你的方法返回一个“”值,即这种情况下你必须在你的语法中包含一个返回类型,当你编写函数withdraw()的定义时。

这是更正的代码行。

double bankAccount::withdraw()
{
---
}
于 2013-05-23T09:46:49.097 回答