Poniżej skrócona wersja mojego klasy Sprite:C inicjalizacji ++ struct
class Sprite
{
struct SpriteState {
Vector3 position;
int width, height;
double rotation, scaling;
};
std::map<int, SpriteState> stateVector;
}
Chciałbym utworzyć obiekt SpriteState poprzez funkcję składową, która wygląda mniej więcej wzdłuż linii z następujących powodów:
SpriteState newSpriteState(
Vector3 position = stateVector.rbegin()->second.position,
int width = = stateVector.rbegin()->second.width,
int height = = stateVector.rbegin()->second.height,
double rotation = stateVector.rbegin()->second.rotation,
double scaling = stateVector.rbegin()->second.scaling)
{ SpriteState a; a.position = position; a.width = width; a.height = height; a.rotation = rotation; a.scaling = scaling; return a; }
pojawia się następujący błąd:
a nonstatic member reference must be relative to a specific object
podstawową ideą klasą sama ma przechowuj różne stany duszka, gdy się zmieniają, aby w razie potrzeby móc łatwo odzyskać do poprzedniego stanu.
Jednak w większości przypadków Sprite jest aktualizowany tylko o nowe wartości pozycji, podczas gdy szerokość, wysokość, obrót i skalowanie pozostają prawie takie same - co oznacza, że zmieniam tylko wartość pozycji podczas pojawiania się i zapisywania ponownie odniesień z ostatni stan zapisany dla innych wartości.
Chciałbym więc móc ustawić wartości domyślne dla funkcji, tak aby nie musiałem pracowicie pisać tych samych wartości wielokrotnie.
Jakieś ewentualne pomysły na wdrożenie?
int szerokość = '=' stateVector.rbegin() -> second.width? – billz