Klassen



  • hardware schrieb:

    Oder versteh ich hier was falsch?

    Ich möchte einfach nur etwas in diese beiden Variablen speichern... bin gerade neu in dem Thema Klassen eingestiegen und dann versuch ich das. Was in "string name" drinn steht ist letzendlich egal. Weil nur das Buch lesen und das nicht praktisch zu versuchen ist auch mist...
    Also könnte ihr mir nun helfen?



  • Womit baust du das?
    manni66 hat dir schon den richtigen Tipp gegeben.



  • Skeptar schrieb:

    Ich möchte einfach nur etwas in diese beiden Variablen speichern...

    Welche Variablen? erste.name und erste.age? Wenn ja: Die Funktionen, wenn man denn Funktionen dafür benutzen will, würde man "Setter" nennen.

    Ich sehe allerdings den Sinn nicht in einer reinen Datenhaltungsklasse, die diese Variablen privat macht, wenn jeder sie sowieso per Setter ändern kann. In 99% der Fälle, wo man sich denkt "vielleicht will ich in der Funktion später auch noch mehr machen, als nur eine Variable setzen", passiert dann doch nichts mehr und man hätte sich die Sache mit den privaten Datenelementen sparen können. Das ist vielleicht auch Geschmackssache.

    Und sonst: Diesen Linkerfehler bekommst du, weil du beim Versuch die ausführbare Datei zu erzeugen anschrift.cpp anscheinend nicht berücksichtigt hast.



  • manni66 schrieb:

    Dann hast du anschrift.cpp nicht eingebunden.

    Stimmt. In der main fehlt ein #include "anschrift.cpp"

    🤡



  • Kleiner Troll schrieb:

    manni66 schrieb:

    Dann hast du anschrift.cpp nicht eingebunden.

    Stimmt. In der main fehlt ein #include "anschrift.cpp"

    🤡

    Wehe er glaubt das wegen dir!



  • Okey klappt danke.
    Krümelkacker dieser Code soll auch keinen Sinn haben ich wollte es einfach nur testen 😛



  • Skeptar schrieb:

    Okey klappt danke.
    Krümelkacker dieser Code soll auch keinen Sinn haben ich wollte es einfach nur testen 😛

    Darf ich fragen was geklappt hat?



  • Ja wieso nicht?
    Also ich habe den Code ein wenig umgeändert so das nun in der Variable "name" ein Text drin steht:

    anschrift.cpp

    #include <iostream>
    #include <string>
    #include "anschrift.h"
    using namespace std;
    
    void anschrift::name_eingeben(string eingabe){
        name=eingabe;
        cout << "Ihr Name ist: " << name;
    }
    

    main.cpp

    #include <iostream>
    #include <string>
    #include "anschrift.h"
    #include "anschrift.cpp"
    
    using namespace std;
    
    int main(){
    
        anschrift erste;
        cout << "Bitte Ihren Namen eingeben: ";
        string name;
        cin >> name;
        erste.name_eingeben(name);
    
        return 0;
    }
    

    Ist das denn so richtig? 😕 Weil das gewünschte Ergebnis hat es ja.
    Und ja ich weiß es ergibt kein Sinn 😃 😃 😃 😃 😃

    So richtig geschnallt habe ich es zwar noch nicht aber werde das noch ein wenig weiter üben mit ein paar "Sinvollen" Variablen und Aufgaben 😛

    Gruß



  • Skeptar schrieb:

    Ja wieso nicht?
    Also ich habe den Code ein wenig umgeändert so das nun in der Variable "name" ein Text drin steht:

    anschrift.cpp

    #include <iostream>
    #include <string>
    #include "anschrift.h"
    using namespace std;
    
    void anschrift::name_eingeben(string eingabe){
        name=eingabe;
        cout << "Ihr Name ist: " << name;
    }
    

    main.cpp

    #include <iostream>
    #include <string>
    #include "anschrift.h"
    #include "anschrift.cpp"
    
    using namespace std;
    
    int main(){
    
        anschrift erste;
        cout << "Bitte Ihren Namen eingeben: ";
        string name;
        cin >> name;
        erste.name_eingeben(name);
    
        return 0;
    }
    

    Ist das denn so richtig? 😕 Weil das gewünschte Ergebnis hat es ja.
    Und ja ich weiß es ergibt kein Sinn 😃 😃 😃 😃 😃 (Das ich für diese Aufgabe eine Klasse verwende)

    So richtig geschnallt habe ich es zwar noch nicht aber werde das noch ein wenig weiter üben mit ein paar "Sinvollen" Variablen und Aufgaben 😛

    Gruß



  • Nunja, du könntest/solltest "anschrift" groß schreiben, also "Anschrift". Zumindest kenne ich die "Konvention", Klassen groß zu schreiben.

    Deine Funktion macht zwei Aufgaben. Einmal anschrift teilweise initialisieren und einmal den name wieder ausgeben. Wie wärs denn mit

    public:
        anschrift(string n, int a) :name{n], alter{a} { } // eigtl. noch überprüfen
                                                         // e.g. kein negatives alter
    
    ostream& operator<<(ostream os, anschrift an)
    {
        os << "Name:\t" << an.name << '\n'
           << "Alter:\t" << an.alter << '\n';
    }
    
    main():
    anschrift erste("Name", 50);
    cout << erste;
    // natürlich kein compilierbarer code
    


  • P.S.: Eine Anschrift sind Name und Alter ja nicht gerade...



  • Ja das ist ja gut 🙂
    Ich wollte einfach nur testen ob das klappt und das tut es nun und nun kann ich es ausbessern, denn ich weiß nun wie ich auf die Variablen zugreife 😃 😃 😃
    Damit ist der Thread wohl geschlossen 🙂



  • Das include anschrift.cpp ist ja wohl nicht dein Ernst!



  • manni66 schrieb:

    Das include anschrift.cpp ist ja wohl nicht dein Ernst!

    Kleiner Troll schrieb:

    manni66 schrieb:

    Dann hast du anschrift.cpp nicht eingebunden.

    Stimmt. In der main fehlt ein #include "anschrift.cpp"

    🤡

    rofl



  • asfdlol schrieb:

    manni66 schrieb:

    Das include anschrift.cpp ist ja wohl nicht dein Ernst!

    Kleiner Troll schrieb:

    manni66 schrieb:

    Dann hast du anschrift.cpp nicht eingebunden.

    Stimmt. In der main fehlt ein #include "anschrift.cpp"

    🤡

    rofl

    Troll halt.


Anmelden zum Antworten