Llamar a método desde un objeto miembro.

No se si he utilizado las palabras correctas en el titulo del hilo. El caso es que quiero hacer lo siguiente:

Teniendo estas 2 clases (en realidad son 4, pero con 2 basta para dar una idea):

Clase "XboxController.h"

//Elements of the controller
#include "XboxButtonControl.h"
#include "XboxJoystickControl.h"
#include "XboxTriggerControl.h"

class XboxController
{
  private: 
    unsigned long millisLastStateChange;
    
    void ChangedState();
    void SendData();
    
  public:
    XboxController();

    XboxButtonControl Left;
    XboxButtonControl Right;
    XboxButtonControl Up;
    XboxButtonControl Down;
    
    XboxButtonControl Back;
    XboxButtonControl Start;
    
    XboxButtonControl LB;
    XboxButtonControl RB;
    
    XboxButtonControl A;
    XboxButtonControl B;
    XboxButtonControl X;
    XboxButtonControl Y;
    
    XboxButtonControl LS;
    XboxButtonControl RS;
    
    XboxJoystickControl Joy_Left_X;
    XboxJoystickControl Joy_Left_Y;
    
    XboxJoystickControl Joy_Right_X;
    XboxJoystickControl Joy_Right_Y;
    
    XboxTriggerControl Trig_Left;
    XboxTriggerControl Trig_Right;
   
    unsigned long GetLastStateChange();
};

contiene varios miembros publicos de la siguiente clase:

Clase "XboxButtonControl.h"

class XboxButtonControl
{
  private:
    bool CurrentState;
    unsigned long millisLastStateChange;

    int SetValue(bool Value);
    
  public:
    XboxButtonControl();
    
    bool GetValue();
    unsigned long GetLastStateChange();

    int Push();
    int Release();
    bool Toggle();
};

Quiero llamar a "void XboxController::ChangedState();" desde una parte del código de "int XboxButtonControl::SetValue(bool Value);".

Teneis alguna idea de cómo hacerlo? porque lo único que se me ocurre, es: En el constructor de "XboxButtonControl", pasarle como parámetro un puntero a la función "void XboxController::ChangedState();". Si no se os ocurre ninguna otra forma mejor, tampoco sé como implementar el puntero a función. Seriais tan amables de explicarmelo minimamente o ponerme un ejemplo en código?

Esto lo estoy haciendo para controlar un mando de Xbox360, que se puede conectar a la consola o al PC. Lógicamente hay que hacer varias modificaciones hardware al mando y meterle circuiteria intermedia para comunicación entre el arduino y el mando.

La idea es: Cuando se llama a cualquiera de las funciones:

int XboxButtonControl:: Push(); int XboxButtonControl::Release(); bool XboxButtonControl::Toggle();

éstas llaman a "int XboxButtonControl::SetValue(bool Value);". Si desde "int XboxButtonControl::SetValue(bool Value);" llama a "void XboxController::ChangedState();" se enviarían los datos al mando de Xbox360 en el mismo instante que se ha llamado a alguna de las 3 funciones anteriores de la clase "XboxButtonControl".

Muchas gracias por leerme y por invertir vuestro tiempo en ayudarme :) ;)