C++类实例声明没有匹配的函数
C++ class instance declaration no matching function
我正在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函数'intmain()':C:/Cartrack/C++/创建窗体/form/main.cpp:68:67:错误:调用'bankAccount::bankAccount(int&,longlong 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:注意:候选:bankAccount::bankAccount()bankAccount(){^~~~~~~~~~~C:/Cartrack/C++/创建表单/form/main.cpp:25:2:注释:候选者需要0个参数,提供5个C:\/Cartrack/C++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++/正在创建form/form'mingw32-make.exe:*[Makefile:5:All]错误2====1个错误,6个警告====
我不知道为什么没有匹配的调用。我传递了两个整数和三个字符串,这似乎是大多数人在阅读现有威胁时犯的错误。
有人能帮忙吗?谢谢
Zane
您需要根据需要声明参数化构造函数。您所拥有的只是默认(或零参数)构造函数。请阅读任何C++书籍/教程的构造函数部分。
此外,您不应该创建像这样的对象
bankAccount ba1 = bankAccount(acc_num_int,0, "","","");
上面的语句将创建一个无名称对象并复制ba1的构造。请阅读有关复制构造函数的信息。当您需要一个对象时,这是额外函数调用的重载。相反,你可以像下面的一样创建你的对象
bankAccount ba1(acc_num_int,0, "","","");
- 如何在c++中为模板函数实例创建快捷方式
- 如何使用非默认构造函数实例化模板化类
- C++ - 使用另一个类的构造函数实例化一个对象
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 与参数匹配的友元模板函数实例化
- c++如何获取模板函数实例的地址
- 在保证复制的世界中构造函数实例化
- SFINAE 和模板函数实例化:为什么在启用了 SFINAE 类型的函数参数中使用模板参数时无法推断模板参数?
- 防止复制构造函数实例化 C++11 类"deleting"
- 如何键入定义一个专门的 std::set 模板,使用特定的比较函数实例化
- 没有 std::string .erase() 的重载函数实例
- C 矢量构造函数实例冲突
- 确保只有一个函数实例在运行?
- 使用不同类型的模板函数实例化
- C 调用模板构造函数实例化
- 没有与参数列表错误匹配的重载函数" "实例
- 为什么很清楚模板函数实例化不会内联
- 没有unordered_map的模板函数实例
- 模板函数实例化文件
- 模板函数实例化的可移植性问题