Det du søger er en funktions pointer (function pointer). Det er en pointer der peger på en funktion, og kan bruges den vej. På denne måde kan du sende et funktionsnavn til en funktion, der senere kan kalde den. En funktions pointer har en meget speciel syntaks, men det lærer man hurtigt.
En funktions pointer ser ud på denne måde:
returType (* funktionsPointerNavn)( /* parameter-list */ );
Her kommer to eksempler:
// Eksempel 1
// Den "normale" funktion
void funktionDerSkalKaldes();
// Her kommer vores funktions pointer
void (* voresFunktionsPointer)() = funktionDerSkalKaldes;
// Bruges...
voresFunktionsPointer();
// Eksempel 2
// Den "normale" funktion
int funktionDerSkalKaldes(int a, int b);
// Her kommer vores funktions pinter
int (* voresFunktionsPointer)(int, int) = funktionDerSkalKaldes;
// Bruges...
voresFunktionsPointer(10, 20);
Håber du forstår der nogenlunde.
Hvis ikke, så har jeg lavet et lille hurigt eksempel;
#include <iostream>
void print_string()
{
std::cout << "Hello, World!" << std::endl;
}
void call_this(void (* function)())
{
function();
}
int main()
{
call_this(print_string); // Kalder funktionen print_string()
return 0;
}
Indlæg senest redigeret d. 20.04.2007 17:54 af Bruger #8422