以下は、私のSpriteクラスの要約版です。
class Sprite
{
struct SpriteState {
Vector3 position;
int width, height;
double rotation, scaling;
};
std::map<int, SpriteState> stateVector;
}
次のように見えるメンバー関数を使用してSpriteStateオブジェクトを作成したいと思います。
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; }
次のエラーが発生します。
非静的メンバー参照は、特定のオブジェクトに関連している必要があります
クラス自体の背後にある基本的な考え方は、スプライトのさまざまな状態を変更時に保存して、必要に応じて以前の状態に簡単に復元できるようにすることです。
ただし、ほとんどの場合、スプライトは新しい位置の値でのみ更新されますが、幅、高さ、回転、スケーリングはほとんど同じです。つまり、ポップアップして、最後に保存された状態からの参照を再度保存するときにのみ、位置の値を変更します。他の値。
したがって、同じ値を繰り返し書く必要がないように、関数のデフォルト値を設定できるようにしたいと思います。
実装に関する考えられるアイデアはありますか?