Creación de una variable de función de puntero de miembro de clase que apunta a una función de miembro de clase no estática

El objetivo es tener la variable miembro._AddValue señala alCreateFirstValue función en la inicialización de la clase y después de la primera invocación deAddValue, todas las llamadas futuras a ella invocarán.CreateAnotherValue.

Anteriormente, acababa de tener una solaAddValue funciona con una verificación condicional para determinar a qué función llamar. Sin embargo, siento que la implementación es defectuosa porque esoif la comprobación se producirá cada vez y parece que una función de puntero sería beneficiosa aquí.

Un ejemplo:

class Foo
{
 private:
  int _value;
  void (*_AddValue)(int value); // Pointer to function member variable

  void CreateFirstValue(int value)
  {
    _value = value;
    _AddValue = &CreateAnotherValue;
  }

  void CreateAnotherValue(int value)
  {
    // This function will create values differently.
    _value = ...;
  }

 public:
  // Constructor
  Foo()
   : _value(0), _AddValue(CreateFirstValue)
  {
  }

  AddValue(int value) // This function is called by the user.
  {
    _AddValue(value);
  }
};

El código anterior no es el código real, solo un ejemplo de lo que estoy tratando de lograr.

ahora mismo estoy recibiendo un error:argument of type void (BTree::)(int) does not match void (*)(int)

Respuestas a la pregunta(2)

Su respuesta a la pregunta