c++ -编译时出错

C++ - Error when compiling

本文关键字:出错 编译 c++      更新时间:2023-10-16

这是我的头文件,由一个类和它的函数组成。我想我没有正确地声明函数,所以有人能指出我的错误在哪里吗?非常感谢!这肯定是新手犯的错误,我对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]的' withdraw 'prog.cpp:25:1:错误:' int bankAccount::withdraw() '的原型不匹配' bankAccount '类中的任何一个prog.cpp:21:16:错误:candidate is: double bankAccount::withdraw()

好运编辑:

  1. 我忘了明确说明,您还应该在取款方法中添加返回语句。
  2. 你应该问问自己,如果你真的想使用静态数组的名称,地址和用户名。我的两分意见是为用户创建一个单独的类,因为地址在逻辑上不属于银行账户(至少不属于我)。
  3. Deposit应该接受double作为参数,并返回void。
  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;
}

我希望这是有点帮助。我为之前的错误回答道歉。另外,请注意这段代码还有很多需要改进的地方。

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

程序中的注意事项:

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

  2. 你的函数定义没有定义返回类型double bankAccount::withdraw()作为你的声明。

  3. 所以如果你的函数不应该返回定义和声明这两个地方使用void作为返回类型。如果你需要返回任何东西,在定义和声明中使用相同的返回类型,并确保返回一个值。

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

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

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

这是更正后的代码行。

double bankAccount::withdraw()
{
---
}