Создание переменной-функции-указателя на член класса, которая указывает на нестатическую функцию-член класса

Цель состоит в том, чтобы иметь переменную-член_AddValue указать наCreateFirstValue функция при инициализации класса и после первого вызоваAddValue, все будущие вызовы к нему будут вызыватьCreateAnotherValue.

Раньше у меня был только одинAddValue функция с условной проверкой, чтобы определить, какую функцию вызывать. Тем не менее, я чувствую, что эта реализация имеет недостатки, потому что этоif проверка будет происходить каждый раз, и кажется, что указатель на функцию здесь будет полезен.

Пример:

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

Приведенный выше код не является реальным кодом, это просто пример того, что я пытаюсь выполнить.

сейчас я получаю сообщение об ошибке:argument of type void (BTree::)(int) does not match void (*)(int)

Ответы на вопрос(2)

Ваш ответ на вопрос