Ich übe OOP in C++ und ich erstelle eine Bankkontoklasse. Hier ist die Klassendefinition:C++ Klasseninstanz Deklaration keine passende Funktion
#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);
}
};
Jetzt in meinem Hauptprogramm Ich versuche, eine Instanz dieser Klasse zu erklären,
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;
}
Jetzt funktioniert alles außer meinem Beispiel Erklärungen,
C:/Cartrack/C++/Creating a form/Form/main.cpp: In function 'int main()': C:/Cartrack/C++/Creating a form/Form/main.cpp:68:67: error: no matching function for call to '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++/Creating a form/Form/main.cpp:25:2: note: candidate: bankAccount::bankAccount() bankAccount() { ^~~~~~~~~~~ C:/Cartrack/C++/Creating a form/Form/main.cpp:25:2: note: candidate expects 0 arguments, 5 provided C:/Cartrack/C++/Creating a form/Form/main.cpp:16:7: note: candidate: bankAccount::bankAccount(const bankAccount&) class bankAccount { ^~~~~~~~~~~ C:/Cartrack/C++/Creating a form/Form/main.cpp:16:7: note: candidate expects 1 argument, 5 provided C:/Cartrack/C++/Creating a form/Form/main.cpp:16:7: note: candidate: bankAccount::bankAccount(bankAccount&&) C:/Cartrack/C++/Creating a form/Form/main.cpp:16:7: note: candidate expects 1 argument, 5 provided mingw32-make.exe[1]: * [Form.mk:97: Debug/main.cpp.o] Error 1 mingw32-make.exe[1]: Leaving directory 'C:/Cartrack/C++/Creating a form/Form' mingw32-make.exe: * [Makefile:5: All] Error 2 ====1 errors, 6 warnings====
Ich bin mir nicht sicher, warum es keinen passenden Anruf gibt. Ich übergebe es zwei Ints und drei Strings, was der Fehler zu sein scheint, den die meisten Leute machen, wenn ich die vorhandenen Bedrohungen gelesen habe.
Kann mir bitte jemand helfen? Danke!
Zane
Sie haben keinen Konstruktor für 'Bankaccount (int acc_num, int acc_id_num, string acc_tel_no, string acc_first_name, string acc_last_name);' – Logman
Es gibt keinen Konstruktor dieses 'Bankkonto zu nehmen (acc_num_int, 0, "", "", "") ' – Marcin
Und bitte erstellen Sie Ihre Objekte nicht so:' bankAccount ba1 = bankAccount (...) '. Es funktioniert, ist aber unnötig kompliziert. Debuggen Sie es, um herauszufinden, was tatsächlich passiert. Die korrekte Syntax ist 'bankAccount ba1 (...)' – Rene