Brauche hilfe
-
SeppJ schrieb:
Es ist zumindest eine technisch richtige Aufgabe.
Und das bringt ihm jetzt was, wenn der gelernte Stil von vor 15 Jahren ist?
SeppJ schrieb:
Und in den ersten Wochen kennt man vielleicht nicht sofort die Operatorüberladung.
Gut, das wäre möglich. Aber da er Klassen und virtuelle Dtoren schon kennt, bin ich davon einfach mal ausgegangen.
SeppJ schrieb:
Die Aufgabe ist erstaunlich gut für das, was hier sonst kommt, bloß ein bisschen unkreativ.
Das stimmt, aber meiner Meinung nach trotzdem ziemlich schlecht.
-
314159265358979 schrieb:
SeppJ schrieb:
Es ist zumindest eine technisch richtige Aufgabe.
Und das bringt ihm jetzt was, wenn der gelernte Stil von vor 15 Jahren ist?
Möglicherweise soll ja die Dreierregel erklärt werden. Mit std::string wird das schwierig. Die Klasse scheint jedenfalls die Basis für weitere Aufgaben zu sein.
-
Wenn er die Dreierregel lernen soll, kann man das auch anhand der Implementierung einer eigenen Stringklasse lernen. Oder ein eigener vector. Oder. Oder. Oder. Aber dafür einer Klasse, die einen String verwenden möchte, das Stringmanagement aufzuzwingen, halte ich für Unfug.
-
314159265358979 schrieb:
Wenn er die Dreierregel lernen soll, kann man das auch anhand der Implementierung einer eigenen Stringklasse lernen.
Das ist eine eigene Stringklasse! Die Einschränkung, nicht std::string zu benutzen ist da drin, damit nicht irgendein Klugscheißer (z.B. du) einfach einen Wrapper um std::string schreibt.
-
Person heißt also String. Na dann ist ja alles klar.

Übrigens: Es gibt da so ein nettes OOP-Prinzip, das besagt, dass eine Klasse nur eine Funktion erfüllen soll. Klingelts? :p
-
Pi: Schon mal dran gedacht, dass man nur sehr wenige Aufgaben während eines Semesters stellen kann? Da muss man halt einige Sachen kombinieren. Ich finde die Aufgabe ziemlich gut. War aber klar, dass du mal wieder nörgeln musst.
-
Danke erstmal für die vielen antworten

SeppJ schrieb:
Das const in Zeile 7 würde ich weglassen, der Nutzer braucht nicht zu wissen, was du mit der Kopie machst, nur dass du eine Kopie machst. Außerdem willst du sie vermutlich verändern (falls du Copy&Swap nutzt, wie man es sollte). Dafür sollte jedoch get_name const sein, laut Aufgabenstellung.
Und natürlich noch die erwähnte Sache mit dem double, sowohl beim eigentlichen Member als auch bei get_name.
Ansonsten schon ganz gut. Die nächsten drei Schritte:
1. Erwähnte Fehler berichtigen
2. Eine der Methoden schnappen und implementieren
2a. Eventuell nochmal nachfragen, falls bei 2 Schwierigkeiten auftreten.
3. Bei 2. fortfahren, bis alle Methoden implementiert sind.Danke ich werd es versuchen und mich dann melden wenn ich nicht weiter komme. Und das mit dem double hab ich warscheinlich falsch verstanden in der aufgabe hab es jetzt auf char * geändert.
manni66 schrieb:
314159265358979 schrieb:
SeppJ schrieb:
Es ist zumindest eine technisch richtige Aufgabe.
Und das bringt ihm jetzt was, wenn der gelernte Stil von vor 15 Jahren ist?
Möglicherweise soll ja die Dreierregel erklärt werden. Mit std::string wird das schwierig. Die Klasse scheint jedenfalls die Basis für weitere Aufgaben zu sein.
Jup das Stimmt das da noch weitere Aufgaben mit dabei sind die damit was zu tun haben.
sebl11
-
Also ich hab jetzt alles soweit abgearbeitet bloß einen Fehler hab ich das er mir die ausgabe falsch ausgibt.
Hier die Personen.cpp mit Konstruktoren
#include "Person.h" #include <iostream> #include <cstring> using namespace std; Person::Person(char const *name) { Person::name = new char[strlen(name)+1]; strcpy(Person::name, name); } Person::~Person() { //dtor } Person::Person(const Person& other) { //ctor } const char* Person::getName() const { return name; } Person& Person::operator=(const Person &other) { delete [] name; Person::name = new char[strlen(other.name)+1]; strcpy (Person::name, other.name); return *this; }Die Personen.h
#ifndef PERSON_H #define PERSON_H class Person { public: Person( char const *name ); ~Person(); const char* getName() const; Person(const Person &p); Person& operator=(const Person& other); protected: private: char* name; }; #endif // PERSON_HUnd die main ist genauso wie auf der ersten seite.
MFG
sebl11
-
Die Regel der großen Drei heißt nicht, dass du die Funktionen leer lassen sollst. Das ist ja fast noch schlimmer als ganz ohne eigene Implementierung!
-
Ich habs geschafft hab den Fehler gefunden

Danke für die Hilfe
-
sebl11 schrieb:
Das verstehe ich jetzt nicht.

Was verstehst du daran nicht? Du sollst Ctor,Dtor etc. implementieren, und nicht leer lassen.