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
-