まだまだ続くよッ!Singleton

Singletonとんとん。
で、GamePadなら、

class GamePad
{
public:
    enum Button {
        PAD_A,
        PAD_B,
    };
private:
    class GamePadImpl {
    public:
        GamePadImpl(){};
        virtual ~GamePadImpl(){};
        bool isPushButton(Button b) {
            return true;
        }
        void update(){}
    };
    static GamePadImpl gamePadImpl;
public:
    static void update() { gamePadImpl.update(); }
    bool isPushButton( Button b ) { return gamePadImpl.isPushButton(b); }
};

みたいな感じにする。
勿論、Repeat(繰り返し入力)やらTrigger(押された瞬間)やRelease(離された瞬間)などに対応するため、
必ず単一のインスタンスに対するアップデートメソッド、
GamePad::update();
をどこか(恐らくゲームループ中)で呼び出す必要はあるけれど、
これは得に問題がない筈。
グローバル変数「もどき」より良いと考えているけれど、どうだろうか。
勿論、GamePadImplはprivateなので
new GamePad::GamePadImpl();
なんてことはできない。