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)