Probleme mit Klassen / meine erste Klasse......



  • Die Fehlermeldung sieht folgendermaßen aus

    C:\Eigene Dateien\Test Sourcecodes\Binary.cpp(5) : error C2871: 'std' : Existiert nicht oder ist kein Namespace
    Fehler beim Ausführen von cl.exe.

    Binary.exe - 1 Fehler, 0 Warnung(en)

    dann nehme ich das using namespace std; wieder raus und alles ist ok....
    was hat das zu bedeuten ? Muß der Compiler getauscht werden, wenn ja wie ??

    DANKE



  • mache ich in den code die Variablendeklaration folgendermaßen:

    char name[15];
    char baum[15];
    

    kommen folgende Fehlermeldungen...
    --------------------Konfiguration: Class03 - Win32 Debug--------------------
    Kompilierung läuft...
    Class03.cpp
    C:\Eigene Dateien\Test Sourcecodes\Class03.cpp(18) : error C2440: 'return' : 'const char [15]' kann nicht in 'char' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    C:\Eigene Dateien\Test Sourcecodes\Class03.cpp(35) : error C2440: 'return' : 'char [15]' kann nicht in 'char' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    C:\Eigene Dateien\Test Sourcecodes\Class03.cpp(52) : error C2664: 'speicherName' : Konvertierung des Parameters 1 von 'char [15]' in 'char' nicht moeglich
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    Class03.exe - 3 Fehler, 0 Warnung(en)

    Ohne diese Deklaration gab es dann vorher nicht den eingegebenen Name zurück, sondern nur den ersten Buchstaben, jetzt wiederrum nur ein Zeichen aus der ASCII Tabelle(DEZ:204 HEX:CC) Son Rahmenbaustein.....

    was hat das nun wieder zu bedeuten ?



  • Vergiss char[], nimm std::string! 🙂

    So kannst du es machen. 🙂

    #include <iostream>
    #include <string>
    
    class Person
    {
        private:    
            int alter;
            std::string name;
    
        public:
            int leseAlter() const
            {
                return alter;
            }
            const std::string& leseName() const
            {
                return name;
            }
            void speicherAlter(int);
            void speicherName(std::string);
    };
    
    void Person::speicherAlter(int alter_)
    {
        alter = alter_;
    }
    
    void Person::speicherName(std::string name_)
    {
        name = name_;
    }
    
    int main()
    {
        std::cout << "Alter: " << std::flush;
        int alter;
        std::cin >> alter;
    
        std::cout << "Name: " << std::flush;
        std::string name;
        std::cin >> name;
    
        Person cool_person;
        cool_person.speicherAlter(alter);
        cool_person.speicherName(name);
    
        std::cout << cool_person.leseAlter() << std::endl << cool_person.leseName() << std::endl;
    }
    
    using namespace std;
    

    müss gehen. Hast du ein uralten Compiler??



  • Ja vielen Dank ChrissiB
    jetzt läuft das Programm endlich... und damit ist meine erste sinnvoll verwendbar Klasse fertig 🙂 *MegaFreu*

    nur leider kann ich dir nix über die Compiler Version sagen... weiß nicht wie ich herausfinde, welche Vers. das ist.. Wo steht das genau ??

    Kann dir nur soviel sagen, das ich Visual C++ 6.0 verwende...

    Und was genau bedeutet folgende Zeile:

    const std::string& leseName() const
    

    wofür steht Const und string&

    THX



  • Du gibts eine Refernz auf ein konstanten String zurück. So verhinderst du mit const, dass man von außen dein internen Name abändern kann ohne Erlaubnis. (siehe setter-Funktionen). Das const dahinter sagt aus, dass die Funktion nichts ändern darf, d.h. in der Methode darf nichts zugewiesen werden und dergleichen. Schau in deinem Buch nach für nähere Details. Vielleicht ist es besser, den Dev C++ zu nehmen. 🤡


Anmelden zum Antworten