【发布时间】:2017-03-16 05:35:17
【问题描述】:
我正在用 C++ 练习 OOP,并且正在创建一个银行帐户类。这是类定义:
#include <iostream>
#include <cmath>
#include <limits>
#include <string>
#include <cstring>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
using namespace std;
const int acc_num_length = 8;
const int acc_id_num_length = 13;
class bankAccount {
private:
int acc_num; // account number
int acc_id_num; // account holder ID number
string acc_tel_no; // account holder telephone number
string acc_first_name; // account holder first name
string acc_last_name; // account holder last name
public:
/* constructor */
bankAccount() {
acc_num = 0;
acc_id_num = 0;
acc_tel_no = "";
acc_first_name = "";
acc_last_name = "";
}
/* detail retrieval */
int get_acc_num() {
return(acc_num);
}
int get_acc_id_num() {
return(acc_id_num);
}
string get_acc_tel_no() {
return(acc_tel_no);
}
string get_acc_first_name() {
return(acc_first_name);
}
string get_acc_last_name() {
return(acc_last_name);
}
};
现在在我的主程序中,我试图声明这个类的一个实例,
int main() {
float acc_num = 0;
while ( ((cout << "Enter account number: ") && !(cin >> acc_num)) || (floor(acc_num) < acc_num) ) {
cout << "Invalid account number.\n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
int acc_num_int = acc_num;
string acc_num_string = to_string(acc_num_int);
while ( acc_num_string.length() != acc_num_length ) {
cout << "Invalid account number (8 characters only).\n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin >> acc_num;
cout << "Enter account number: \n";
}
bankAccount ba1 = bankAccount(acc_num_int,0, "","","");
bankAccount ba2 = bankAccount();
return 0;
}
现在一切正常,除了我的实例声明,
C:/Cartrack/C++/创建表单/Form/main.cpp: In function 'int main()': C:/Cartrack/C++/创建表单/Form/main.cpp:68:67: 错误: 没有匹配函数调用'bankAccount::bankAccount(int&, long long int, const char [1], const char [1], const char [1])'
bankAccount ba1 = bankAccount(acc_num_int,0, "","",""); ^ C:/Cartrack/C++/创建表单/Form/main.cpp:25:2: 注意:候选: 银行账户::银行账户() 银行账户() { ^~~~~~~~~~~ C:/Cartrack/C++/创建表单/Form/main.cpp:25:2: 注意:候选 需要 0 个参数,提供 5 个 C:/Cartrack/C++/Creating a form/Form/main.cpp:16:7: 注意:候选人: bankAccount::bankAccount(const bankAccount&) 类 bankAccount { ^~~~~~~~~~~ C:/Cartrack/C++/创建表单/Form/main.cpp:16:7: 注意:候选人需要1个参数,提供5个 C:/Cartrack/C++/创建表单/Form/main.cpp:16:7: 注意:候选: bankAccount::bankAccount(bankAccount&&) C:/Cartrack/C++/创建一个 form/Form/main.cpp:16:7: 注意:候选人需要 1 个参数,5 提供 mingw32-make.exe[1]: * [Form.mk:97: Debug/main.cpp.o] 错误 1 mingw32-make.exe[1]: 离开目录'C:/Cartrack/C++/Creating a form/Form' mingw32-make.exe: * [Makefile:5: All] 错误 2 ====1 个错误,6 个警告====
我不确定为什么没有匹配的调用。我将两个整数和三个字符串传递给它,这似乎是我阅读现有威胁时大多数人所犯的错误。
有人可以帮忙吗? 谢谢!
赞恩
【问题讨论】:
-
你没有
bankAccount(int acc_num, int acc_id_num, string acc_tel_no, string acc_first_name, string acc_last_name);的构造函数 -
没有构造函数取这个
bankAccount(acc_num_int,0, "","","") -
请不要像这样创建您的对象:
bankAccount ba1 = bankAccount(...)。它有效,但不必要地复杂。调试它以找出实际发生的情况。正确的语法是bankAccount ba1(...)
标签: c++