zu 1: ich hab gedacht, wenn ich z.B. für irgendeine rechnung eine sehr große zahl plus 50 rechnen muss mach ich das so (die Klasse hat innen einen vector für jede ziffer, so kann die zahl unedlich groß werden):
BigNumber += 50;
so darin soll ja dann auf die daten von der großen nummer 50 addiert werden:
vDaten = BigNumber + 50
Und das mach ich ja durch den operator meiner klasse in dem ich halt die vDaten aus der BigNumber auslese und diese dann durch einen algorithmus plus 50 rechne und da muss ja dann wieder ein vector zurückgegeben werden, sonst kann ich ja nicht die zuweißung in der += machen.
Schön und gut. Aber das erklärt nicht warum das Ergebnis von big_number + 50 ein vector<int> sein sollte und keine BigNumber!?
zu 2/3.
Wieso müssen diese const sein?
Müssen nicht, der operator + sollte aber const sein!? Oder gibt es einen bestimmten Grund wieso er nicht const sein sollte?
zu 4: Was meinst du damit?
Deine Operatoren sollten wohl so in der Art aussehen (unter der Annahme dass du sie als Memberfunktionen implementierst):
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
const BigNumber operator +(BigNumber b) const
{
return b += *this;
}
BigNumber& operator +=(const BigNumber&)
{
// implementierung der addition hier
return *this;
}
|
Wobei es noch besser wäre, operator + als freie Funktion zu implementieren:
|
C-/C++-Quelltext
|
1
2
3
4
|
const BigNumber operator +(BigNumber a, const BigNumber& b)
{
return a += b;
}
|
zum rest: versteh ich, stell das aber erst mal zurück.
Was genau meinst du damit? Der "Rest" bezieht sich auf diesen Code:
|
C-/C++-Quelltext
|
1
|
void operator+= (int iSumand) {vDaten = (this + iSumand)->GetvDaten();};
|
Ich seh nicht wo man da etwas "zurückstellen" könnte. Der Code ist schlicht und einfach falsch.