1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt
/*
This is an example illustrating the use of the member_function_pointer object
from the dlib C++ Library.
*/
#include <iostream>
#include <dlib/member_function_pointer.h>
using namespace dlib;
using namespace std;
// ----------------------------------------------------------------------------------------
class example_object
{
public:
void do_something (
)
{
cout << "hello world" << endl;
}
void print_this_number (
int num
)
{
cout << "number you gave me = " << num << endl;
}
};
// ----------------------------------------------------------------------------------------
int main()
{
// create a pointer that can point to member functions that take no arguments
member_function_pointer<> mfp1;
// create a pointer that can point to member functions that take a single int argument
member_function_pointer<int> mfp2;
example_object obj;
// now we set the mfp1 pointer to point to the member function do_something()
// on the obj object.
mfp1.set(obj, &example_object::do_something);
// now we set the mfp1 pointer to point to the member function print_this_number()
// on the obj object.
mfp2.set(obj, &example_object::print_this_number);
// Now we can call the function this pointer points to. This calls the function
// obj.do_something() via our member function pointer.
mfp1();
// Now we can call the function this pointer points to. This calls the function
// obj.print_this_number(5) via our member function pointer.
mfp2(5);
// The above example shows a very simple use of the member_function_pointer.
// A more interesting use of the member_function_pointer is in the implementation
// of callbacks or event handlers. For example, when you register an event
// handler for a dlib::button click it uses a member_function_pointer
// internally to save and later call your event handler.
}
// ----------------------------------------------------------------------------------------
|