Entwurf einer Klasse Konto mit Überweisung



  • Hey Forum,

    sitze nun schon einige Zeit hier, um die Aufgabe zu lösen. Leider komme ich nicht weiter 😕
    Ich moechte eine Klasse entwerfen, wo man eine Überweisungsfunktion nutzen kann.

    Die Bedingung ist, dass die funktion ueberweisen das zielkonto per zeiger erhaelt.

    Folgendes habe ich erstellt, leider funktioniert das nicht:

    # include <iostream>
    # include <stdio.h>
    # include <string>
    
    using namespace std;
    
    class Konto
    
    {
    private:
    
        string Name;
        int Kontonummer;
        float Guthaben;
        string Geheimnummer;
    
    public:
    
        Konto( int kontonummer, float guthaben, string geheimnummer);
        int einzahlen( float betrag, int kontonummer);
        float abheben (string name, string geheimnummer, int kontonummer, float betrag);
        int ueberweisen(class Konto *pzielkonto, int zielkontonummer,float betrag);
    
    };
    
    Konto :: Konto (int kontonummer, float guthaben, string geheimnummer)
    {
    
        kontonummer=Kontonummer;
        guthaben=Guthaben;
        geheimnummer=Geheimnummer;
    
    }
    
    int Konto :: einzahlen( float betrag, int kontonummer)
    {
        if (kontonummer==Kontonummer)
    	{Guthaben=Guthaben+betrag;
    	return 1;}
    
        return 0;
    }
    
    float Konto :: abheben (string name, string geheimnummer, int kontonummer, float betrag)
    
    {
        if (name==Name && geheimnummer==Geheimnummer && kontonummer==Kontonummer && (Guthaben-betrag)>0)
    	{ 
               Guthaben=Guthaben-betrag;
    
               return Guthaben;
    
    	}
    
    return 0;
    
    }
    
    int Konto :: ueberweisen(Konto *pzielkonto, int zielkontonummer,float betrag)
    
    {
        if (betrag<=Guthaben)
    	{
    
            (*pzielkonto).einzahlen(betrag, zielkontonummer);
    
    }
    return 1;
    
    }
    

    Vielleicht sind hier ja ein paar nette Menschen, die mir ein bisschen helfen koennen:) 🙂 🙂



  • Was genau funktioniert nicht? Bitte eine genaue Fehlerbeschreibung und eine konkrete Frage und deinen Lösungsansatz für das Problem.



  • Nun ich kann einfach keine Instanz erstellen.

    das sagt der compiler:

    3 IntelliSense: Keine Instanz des Konstruktors ""Konto::Konto"" stimmt mit der Argumentliste überein.
    Argumenttypen sind: (const char [5], int, double, int)

    Ich habe leider keine Idee, was da nicht stimmen kann. Die komplette Klasse habe ich ja selbst geschrieben 😞



  • Nun, du willst wo irgendwo folgenden Konstruktor aufrufen: Konto::Konto(const char [5], int, double, int). Den gibt es aber nicht.
    Du hast nur: Konto::Konto( int kontonummer, float guthaben, string geheimnummer)



  • 1. was intellisense sagt, ist nett, entscheidend ist aber dei Fehlermeldung das compilers
    2. sollen wir uns jetzt den Code an der Fehlerstelle aus den Fingern saugen?



  • Sry, bin, wie mein Name sagt, noch Anfaengerin 😕

    Fehler 2 error LNK1120: 1 nicht aufgelöste Externe

    Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_main" in Funktion "___tmainCRTStartup".



  • Du hast keine main-Funktion.



  • Danke fuer deine Antwort.

    Doch die habe ich. Das ist die Header-Datei. (Habe auch korrekt inkludiert)
    Er sagt mir immer wieder wenn ich Beispielsweise eine Klasse anlege:

    Konto Hans ("Hans", 12222, 1111.50, 50);

    Schreibt er, dass "Hans" nicht zulässig ist. Es wird ein const char[5] erwartet, aber ich habe es doch als string definiert.

    😕



  • Anfaengerin schrieb:

    Doch die habe ich. Das ist die Header-Datei. (Habe auch korrekt inkludiert)

    Wenn das die selbe ist, wie du gepostet hast, ist da keine main-Funktion drin.

    Er sagt mir immer wieder wenn ich Beispielsweise eine Klasse anlege:

    Konto Hans ("Hans", 12222, 1111.50, 50);

    Schreibt er, dass "Hans" nicht zulässig ist. Es wird ein const char[5] erwartet, aber ich habe es doch als string definiert.

    😕

    s. erster Beitrag von mir.



  • So habe ich es momentan:
    Aber der Fehler ist der selbe

    # ifndef Header_h
    # define Header_h
    
    # include <iostream>
    # include <stdio.h>
    # include <string>
    
    using namespace std;
    
    class Konto
    
    {
    private:
    
        string Name;
        int Kontonummer;
        float Guthaben;
        string Geheimnummer;
    
    public:
    
        Konto(string name, int kontonummer, float guthaben, string geheimnummer);
        int einzahlen( float betrag, int kontonummer);
        float abheben (string name, string geheimnummer, int kontonummer, float betrag);
        int ueberweisen(Konto *pzielkonto, int zielkontonummer,float betrag);
    
    };
    
    Konto :: Konto (string name, int kontonummer, float guthaben, string geheimnummer)
    {
        Name=name;
    	Kontonummer=kontonummer;
        Guthaben=guthaben;
        Geheimnummer=geheimnummer;
    
    }
    
    int Konto :: einzahlen( float betrag, int kontonummer)
    {
        if (kontonummer==Kontonummer)
    	{Guthaben=Guthaben+betrag;
    	return 1;}
    
        return 0;
    }
    
    float Konto :: abheben (string name, string geheimnummer, int kontonummer, float betrag)
    
    {
        if (name==Name && geheimnummer==Geheimnummer && kontonummer==Kontonummer && (Guthaben-betrag)>0)
    	{ 
               Guthaben=Guthaben-betrag;
    
               return Guthaben;
    
    	}
    
    return 0;
    
    }
    
    int Konto :: ueberweisen(Konto *pzielkonto, int zielkontonummer,float betrag)
    
    {
        if (betrag<=Guthaben)
    	{
    
            pzielkonto->einzahlen(betrag, zielkontonummer);
    
    	}
    return 1;
    
    }
    
    # endif
    
    # include "Header.h"
    
    void main()
    
    {
        Konto Hans ("Hans", 12345, 50.50, 20);
    
    }
    


  • Es muss int main heissen. Geheimnummer ist std::string, du übergibst jedoch ein int.



  • Hey, ich habe mir gerade den code angeguckt und mich gefragt wie die main aussehen könnte also sowas wie Hans.überseisen(Max,1221, 400) 1221 <-- kontonummer , 400 <--guthaben
    bei mir kommt da eine fehlermeldung...
    zudem habe ich eine frage was genau das *pzielkonto bedeutet



  • @DonthaveSkills sagte in Entwurf einer Klasse Konto mit Überweisung:

    zudem habe ich eine frage was genau das *pzielkonto bedeutet

    Wenn p ein Zeiger auf ein Dings ist, dann ist *p jenes Dings auf das p gerade zeigt.


  • Mod

    Vorsicht, wo man abschreibt. Dies ist nicht gerade guter Vorbildcode, sondern von einem blutigen Anfänger geschrieben. Siehe auch dein anderer Thread.

    Da es relativ unhöflich ist, uralte Threads auszugraben, und deine unmittelbare Frage beantwortet wurde, schließe ich hier. Weitere konkrete Fragen stellst du entweder in deinem anderen Thread (wenn sie dort passen) oder in einem neuen.


Log in to reply