Hall Spieleprogrammierer.de-Gemeinde (hier ist im Moment aber wirklich wenig los!), folgende Frage:
wenn ich folgenden Code habe:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
...
char **pp = ...;
...
*static_cast<T*>(*pp) = ...;
*pp += sizeof(T);
...
|
Als Erklärung: "pp" zeigt auf einen Zeiger auf Binärdaten, der bei mir wie ein Dateipositionszeiger wirkt. Nun will ich dereferenzieren, den Pointer-Typ casten in T*(T ist ein template-Parameter) und dann will ich diesen gecasteten Zeiger nochmal dereferenzieren und der resultierenden "Variablen" einen Wert T zuordnen. Das müsste doch eigentlich so funktionieren, oder? (wenn nicht, sagt's bitten!)
SO: nun will ich das alles aber in eine Zeile packen, meine erste Überlegung war natürlich:
|
C-/C++-Quelltext
|
1
|
*(static_cast<T*>(*pp)++) = ...;
|
weil der gecastete Zeiger dann inkrementiert wird (um die Anzahl der Bytes des Typs T, oder?). Doch wie funktioniert da der cast? Gibt er nur einen T-Zeiger zurück, der temporär erstellt wurde und die post-ink.-Operation bringt gar nichts oder geht es immer noch um den "original" T-Zeiger, der von "pp" dereferenziert wurde (da dies ja mein Positionszeiger ist).
Danke schonmal,
Till