Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Objekt Programmierung (http://www.informatikerboard.de/board/thread.php?threadid=3165)
Geschrieben von Windows am 19.10.2016 um 16:22:
Soll ich einen lop davor << und dann ausgeben ?
Geschrieben von Karlito am 19.10.2016 um 17:22:
Nein, Du sollst schauen, wie Du beim Überladen des Operators getter verwendet hast. Wenn Du nicht weißt was ein getter ist, dann google es bitte.
Gruß,
Karlito
Geschrieben von Windows am 19.10.2016 um 17:30:
| code: |
1:
2:
3:
4:
5:
6:
|
m_duration = lop.getDuration() + rop.getDuration();
m_contentSize = lop.getContentsize()() + rop.getContentsize();
|
|
Funzt immer noch net
Geschrieben von Karlito am 19.10.2016 um 17:49:
Ich glaube das hat keinen Sinn. Wahrscheinlich ist es sinnvoller Du nimmst dir ein Buch und eine simplere Aufgabenstellung und wir klären hier Grundlagenfragen. Das hier läuft nur darauf hinaus, dass wir dir die Lösung zurechtbasteln, ohne dass Du es verstehst.
Wie auch schon euler sagte:
| Zitat: |
Original von eulerscheZahl
Es gibt da eine ziemlich große Lücke zwischen dem, was du kannst und dem, was du können sollst. |
Gruß,
Karlito
Geschrieben von Windows am 19.10.2016 um 17:59:
ja ich habe es ja probiert ,aber ich verstehe nicht so ganz wie ich den Fehler korriegieren kann
Geschrieben von Windows am 20.10.2016 um 08:22:
Einen kleinen Teil habe ich schon ipmlementiert :
const(CTitle operator+(const CTitle& duration,const CTitle&contentSize){
CTitle ret(duration);
ret+= contentSize;
return ret;
}
Bei += habe ich Probleme ?
Geschrieben von Windows am 20.10.2016 um 13:23:
Es ist auch in diesem Forum nicht gerade so ,dass man gerade von Fragen überschwemmt wird?
Geschrieben von eulerscheZahl am 20.10.2016 um 13:33:
Du machst einem das Helfen aber auch nicht gerade einfach. Du haust Syntaxfehler rein, die du eigentlich selbst erkennen solltest.
Hier z.B.:
| code: |
1:
|
m_contentSize = lop.getContentsize()() + rop.getContentsize(); |
|
Du schreibst bei getContentsize zwei Klammerpaare. Das ist einfach falsch. Ich weiß nicht, ob du das nicht besser kannst oder einfach unkonzentriert warst. Aber in beiden Fällen ist es problematisch - beim Programmieren muss eben jedes Zeichen richtig sein, damit das Programm funktioniert.
Deine Aufgabe ist Operatorüberladung (vom Schwierigkeitsgrad für Fortgeschrittene), aber du bringst immer wieder solche Anfängerfehler. Bei den Lücken in den Grundlagen sind solche Aufgaben eben schwierig.
Zu deiner letzten Frage:
ret+= contentSize;
du willst den + Operator überladen, da kannst du ihn nicht schon verwenden.
Und hier ist zwar nicht wirklich viel los, aber hauptsächlich werden die Fragen von Karlito und mir beantwortet. Wir haben eben auch noch andere Dinge zu tun.
Geschrieben von Windows am 20.10.2016 um 13:41:
Bei dem oberen Code war es ein Flüchtigkeitsfehler .
Aber na gut wenn niemand helfen möchte dann macht es auch keinen Sinn.
Geschrieben von WindowsisBack am 20.10.2016 um 21:12:
Zu deiner letzten Frage:
ret+= contentSize;
du willst den + Operator überladen, da kannst du ihn nicht schon verwenden.
Meinst du das ich das noch im Header definieren muss?
Geschrieben von eulerscheZahl am 21.10.2016 um 06:11:
Nein.
Du schreibst in deinem Programm "man rechnet Plus, indem man Plus rechnet".
Ich habe nicht ausprobiert, was passiert. Entweder macht der Compiler das nicht mit oder das Programm ruft operator+ immer wieder auf, bis der Stack überläuft und das Programm abstürzt.
Geschrieben von Windows am 21.10.2016 um 08:44:
Was kann ich machen um das Problem zu beseitigen ?
Ich will jetzt einfach nur noch die Aufgabe abschließen
Geschrieben von eulerscheZahl am 21.10.2016 um 09:02:
Ungetestet, ich habe das jetzt einfach im Texteditor geschrieben:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
//warum nicht title1 und title2 als Namen? So finde ich das irreführend
const(CTitle operator+(const CTitle& duration,const CTitle& contentSize) {
//wenn die Bitraten nicht übereinstimmen, wird linker Operand zurückgegeben
if (duration.getBitRate() != contentSize.getBitRate()) return duration; //getBitRate musst du glaube ich noch implementieren
//der Name ist <name1>, <name2>
string newName = string(duration.getName()) + string(", ") + string(contentSize.getName());
string newPerformer = duration.getPerformer();
if (duration.getPerformer().compare(contentSize.getPerformer()) != 0) //strings sind verschieden
newPerformer += string(", ") + string(contentSize.getPerformer());
int length = duration.getDuration() + contentSize.getDuration();
int size = duration.getContentsize() + contentSize.getContentsize();
return new CTitle(size, length, newName, newPerformer, duration.getBitRate());
} |
|
Du musst schon explizit angeben, welche Variable welchen Inhalt kriegen soll.
Forensoftware: Burning Board, entwickelt von WoltLab GmbH