c++ -编译时出错
C++ - Error when compiling
这是我的头文件,由一个类和它的函数组成。我想我没有正确地声明函数,所以有人能指出我的错误在哪里吗?非常感谢!这肯定是新手犯的错误,我对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()
- 我忘了明确说明,您还应该在取款方法中添加返回语句。
- 你应该问问自己,如果你真的想使用静态数组的名称,地址和用户名。我的两分意见是为用户创建一个单独的类,因为地址在逻辑上不属于银行账户(至少不属于我)。
- Deposit应该接受double作为参数,并返回void。
- 您不需要为提款金额和存款金额设置成员变量。使它们成为局部变量,或者甚至更好地将它们作为参数传递给你的方法,如下面的代码所示。
这里是另一种实现,请注意我留下了名称和密码,但实际上这些应该移动到不同的类:
#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。
程序中的注意事项:
-
double withdraw();
声明返回类型,但你的函数定义不返回任何双精度值 -
你的函数定义没有定义返回类型double
bankAccount::withdraw()
作为你的声明。 -
所以如果你的函数不应该返回定义和声明这两个地方使用
void
作为返回类型。如果你需要返回任何东西,在定义和声明中使用相同的返回类型,并确保返回一个值。 -
确保在使用之前初始化成员变量(可能在构造函数中)。
另外建议您参考本教程:http://www.cplusplus.com/doc/tutorial/
由于你的方法返回一个"double"值,即balance在这种情况下,你必须在你的语法中包含一个返回类型,当你在编写函数withdraw()的定义时。
这是更正后的代码行。
double bankAccount::withdraw()
{
---
}
- 在Linux for Windows上编译C++代码时出错
- 为x86而非x64编译时出错
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- 尝试在Windows上执行C++时出错(通过MinGW编译)
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- constexpr 使用 clang 编译 TensorFlow 时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 编译包含指向模板函数的指针的初始值设定项列表时,gcc 出错,但 clang 不出错
- 编译时出错 - 从 DWORD 到 LPCVOID 的转换
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 编译时出错 - 链接.cpp和头文件
- <limits> 使用 VSC2019 编译旧代码时出错
- 在 ubuntu 焦点上编译虚幻引擎 4.25 时出错
- 编译包含LLVM API标头的C++文件时出错
- 编译以下代码时出错
- 使用交叉工具ng编译gcc时出错
- 在 dll 中为 qLibrary 编译 qobject 时出错
- 使用 cmake 在窗口上编译 c++ 数据库时出错
- 使用 TDM GCC 5.1.0 编译 PDCurses36 时出错
- Lua :在原生lua中编译,但在使用LuaJIT和sol2时C++出错