kann man das schöner machen?
-
ok, ich hab da mal wieder was verbrochen, und hab keinen peil, wie man das in anständigem c++ schreiben kann(diesmal is es zum glück nur eine zeile :D)
return group_member[containerID]->operator[](ElementID-checkedID)
group_member is ein vector mit zeigern auf andere vektoren, und ich empfinde diese Zeile als ur häßlich, da ich den zweiten [] operator als funktion ausschreiben muss, und keinen peil hab, wie ic das umschreiben kann.
ich hab es schon versucht umzuschreiben,indem ich das ganze auf 2 zeilen aufgeeilt hab, doch das ging derbe schief:
//irgendwo oben drüber die deklaration von a a=*(group_member[containerID]); return a[ElementID-checkedID];
eigentlich müsste das Klappen, doch weis der geier wieso, das ganze endete in undefiniertem verhalten^^
-
Also, ich seh nur einen Syntaxfehler :p
-
eigentlich müsste das Klappen, doch weis der geier wieso, das ganze endete in undefiniertem verhalten^^
Das liegt daran, dass deine zweite Version eine Kopie erstellt und die erste nicht. Schöner gehts wahrscheinlich mit at:
return group_member[containerID]->at(ElementID-checkedID);
Ansonsten helfen da nur inline Funktionen.
-
das du unbedingt auf ner ")" statt ner "]" rumreiten musst
egal, fehler gefunden, der * operator im 2. teil stand falsch,dachte, dass er ne kleinere priorität als der [] operator hätte, aber trotzdem frag ich mich, wo der unterschied zwischen *a[b] und *(a[b]) besteht...
@irgendwer die erste funktion fuktioniert fehlerfrei,die 2. aber nicht.
at brauch ich nich, da bei mir normalerweise keine bereichsüberschreitung stattfinden kann(ist doch schön, wenn man das sagen kann oder?^^)btw: die kopie eines vectors ist absolut ungefährlich, da konnte der fehler nich dran liegen^^
-
[edit]
oops,falsch geklickt...
-
otze schrieb:
aber trotzdem frag ich mich, wo der unterschied zwischen *a[b] und *(a[b]) besteht...
*a[b] == a[0][b]
*(a[b]) == ((a+b))
Hoffe ich zumindest*g
-
otze schrieb:
aber trotzdem frag ich mich, wo der unterschied zwischen *a[b] und *(a[b]) besteht...
Es gibt keinen, op[] hat eine größere Priorität als der unäre op*, deshalb machen die runden Klammern in deinem Fall gar keinen Sinn.
*a[b] == a[b][0];
-
eben, wieso bekomm ich dann aber ein anderes ergebnis wenn ich die klammern verwende?