Brauche Hilfe



  • Könntet ihr mir plz sagen wo der fehler ist ?
    Bekomme immer Interner-compiler fehler

    #include <iostream>
    using namespace std;
    
    class Person
    {
    	public:
    		Person(char* name, int age);
    		~Person();
    		int getAge() {return *itsAge;}
    		char* getName() {return itsName;}
    
    		void SetName(char* name) {itsName = name;}
    		void SetAge(int age) {*itsAge = age;}
    
    	private:
    		char* itsName;
    		int* itsAge;
    };
    
    Person::Person(char* name, int age)
    {
    	itsName = name;
    	*itsAge = age;
    }
    
    Person::~Person
    {
    	delete itsName;
    	delete itsAge;
    }
    
    int main()
    {
    	Person TheFirst;
    
    	return 0;
    }
    


  • Du hast in dem letzten Teil zweimal die Klammern vergessen.
    Einmal bei deinem Destruktor hinter dem Funktionskopf.
    Und einmal in der mainfuntion, wo du ein neues Objekt deiner Klasse erstellst.



  • #include <iostream>
    #include <string>
    using namespace std;
    
    class Person
    {
        public:
            Person(const string &name, int age); //wir verwenden lieber string
    		  //dann brauchen wir auch keinen destruktor.
    
            int getAge() const {return itsAge;} //warum war itsAge ein zeiger?
            const std::string &getName() const {return itsName;} //string statt char*
    
            void SetName(const std::string &name) { itsName = name; } //string statt char*
            void SetAge(int age) { itsAge = age; } 
    
        private:
            string itsName;    //string statt char*
            int itsAge;			//warum ein zeiger? 
    };
    
    Person::Person(const string &name, int age)
    {
        itsName = name;
        itsAge = age;
    }
    //hier bietet sich auch eine elementinitialisierungsliste an:
    /*
    Person::Person (const string &name, int age) :
     itsName(name), itsAge(age) {}
    */
    
    int main()
    {
        Person me("david", 17);
    }
    

    lieber string statt char* verwenden, weil's einfacher ist und du keine probleme mit delete etc. bekommst 🙂
    warum du itsAge als zeiger implementiert hast, verstehe ich nicht ganz.



  • sollte nur ein test sein 🙂

    thx



  • 😕


Anmelden zum Antworten