C++ – Klassen-Instanz-Deklaration keine passende Funktion

Ich bin Praktizierender OOP in C++ und ich bin erstellen einer Konto-Klasse. Hier ist die Klassendefinition:

#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);
    }
};

Nun in meinem main-Programm, das ich versucht zu erklären, dass eine Instanz dieser Klasse,

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;
}

Nun alles funktioniert, außer mein Beispiel-Deklarationen,

C:/Cartrack/C++/Erstellen form/Form/main.cpp: In function ‚int
main()‘: C:/Cartrack/C++/Erstellen einer form/Form/main.cpp:68:67: Fehler:
keine passende Funktion für Aufruf von ‚Bankverbindung::Konto(int& lange
long int, const char [1], const char [1], const char [1])‘

Bankverbindung ba1 = bankAccount(acc_num_int,0, „“,““,““);
^ C:/Cartrack/C++/Erstellen einer form/Form/main.cpp:25:2: Anmerkung: Kandidaten:
Bankverbindung::Konto() Konto() { ^~~~~~~~~~~
C:/Cartrack/C++/Erstellen einer form/Form/main.cpp:25:2: Anmerkung: Kandidat
erwartet 0 Argumente, 5 C:/Cartrack/C++/Erstellen
form/Form/main.cpp:16:7: Anmerkung: Kandidat:
Bankverbindung::Konto(const Konto&) Klasse bankAccount {
^~~~~~~~~~~ C:/Cartrack/C++/Erstellen einer form/Form/main.cpp:16:7: Anmerkung: Kandidat erwartet 1 argument, 5
C:/Cartrack/C++/Erstellen einer form/Form/main.cpp:16:7: Anmerkung: Kandidat:
Bankverbindung::Konto(Bankverbindung&&) C:/Cartrack/C++/Erstellen
form/Form/main.cpp:16:7: Anmerkung: Kandidat erwartet 1 argument, 5
zur Verfügung gestellt mingw32-make.exe[1]: * [Formular.mk:97: Debug/main.cpp.o] Fehler
1 mingw32-make.exe[1]: Leaving directory ‚C:/Cartrack/C++/Erstellen
form/Form‘ mingw32-make.exe: *
[Makefile:5: All] Fehler 2
====1 errors, 6 Warnungen====

Ich bin mir nicht sicher, warum es keinen passenden call. Ich bin vorbei es zwei ints und drei Saiten, das scheint zu sein, den Fehler, den die meisten Leute machen, wenn ich gelesen habe, durch den die vorhandenen Bedrohungen.

Kann jemand helfen bitte?
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);
  • Es gibt keinen Konstruktor an dieser bankAccount(acc_num_int,0, "","","")
  • Und bitte nicht schaffen, Ihre Objekte wie diese: bankAccount ba1 = bankAccount(...). Es funktioniert, aber ist unnecesarily kompliziert. Debuggen, um herauszufinden, was tatsächlich passiert. Die korrekte syntax ist bankAccount ba1(...)
InformationsquelleAutor Zane | 2017-03-16



One Reply
  1. 1

    Müssen Sie erklären parametrisierte Konstruktoren wie pro Ihre Notwendigkeit. Alles, was Sie haben, ist, Standard – (oder null-argument) – Konstruktor.
    Bitte Lesen Sie den Konstruktor Abschnitt von jedem C++ Buch/tutorial.

    Außerdem sollte man nicht die Objekte erstellen, wie

     bankAccount ba1 = bankAccount(acc_num_int,0, "","","");

    Obige Anweisung erstellt eine namenlose Objekt und tun kopieren Sie den Bau von ba1. Bitte Lesen Sie über die copy-Konstruktoren. Wenn Sie brauchen, um ein einzelnes Objekt dies ist eine überladung für die extra-Funktion aufrufen. Stattdessen können Sie Ihr Objekt, wie unten

    bankAccount ba1(acc_num_int,0, "","","");
    • Vielen Dank für diese, ich Schätze die schnelle Antwort.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.