Tworzenie zmiennej funkcji wskaźnika klasy, która wskazuje na niestatyczną funkcję członka klasy
Celem jest posiadanie zmiennej składowej_AddValue
wskazują naCreateFirstValue
funkcja po inicjalizacji klasy i po pierwszym wywołaniuAddValue
, wywołają się wszystkie przyszłe wywołaniaCreateAnotherValue
.
Wcześniej miałem singielAddValue
funkcja z kontrolą warunkową, aby określić, którą funkcję wywołać. Jednak wydaje mi się, że wdrożenie jest wadliwe, ponieważ toif
sprawdzanie będzie występować za każdym razem i wydaje się, że wskaźnik funkcji byłby tutaj korzystny.
Przykład:
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);
}
};
Powyższy kod nie jest rzeczywistym kodem, tylko przykładem tego, co próbuję osiągnąć.
teraz mam błąd:argument of type void (BTree::)(int) does not match void (*)(int)