Criando uma variável de função de ponteiro de membro de classe que aponta para uma função de membro de classe não estática

O objetivo é ter a variável de membro_AddValue aponte para oCreateFirstValue função após a inicialização da classe e após a primeira invocação deAddValue, todas as chamadas futuras para ele invocarãoCreateAnotherValue.

Anteriormente, eu só tinha um únicoAddValue função com uma verificação condicional para determinar qual função chamar. No entanto, sinto que essa implementação é falha porqueif A verificação ocorrerá sempre e parece que um ponteiro de função seria benéfico aqui.

Um exemplo:

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);
  }
};

O código acima não é o código real, apenas um exemplo do que estou tentando realizar.

agora estou recebendo um erro:argument of type void (BTree::)(int) does not match void (*)(int)

questionAnswers(2)

yourAnswerToTheQuestion