Die letzten 10 Beiträge |
eulerscheZahl |
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. |
Windows |
Was kann ich machen um das Problem zu beseitigen ?
Ich will jetzt einfach nur noch die Aufgabe abschließen
|
eulerscheZahl |
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. |
WindowsisBack |
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? |
Windows |
Bei dem oberen Code war es ein Flüchtigkeitsfehler .
Aber na gut wenn niemand helfen möchte dann macht es auch keinen Sinn. |
eulerscheZahl |
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. |
Windows |
Es ist auch in diesem Forum nicht gerade so ,dass man gerade von Fragen überschwemmt wird?
|
Windows |
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 ? |
Windows |
ja ich habe es ja probiert ,aber ich verstehe nicht so ganz wie ich den Fehler korriegieren kann
|
Karlito |
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 |
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen. |
|
|