diff options
Diffstat (limited to 'ml/dlib/examples/member_function_pointer_ex.cpp')
-rw-r--r-- | ml/dlib/examples/member_function_pointer_ex.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ml/dlib/examples/member_function_pointer_ex.cpp b/ml/dlib/examples/member_function_pointer_ex.cpp new file mode 100644 index 00000000..26724d3a --- /dev/null +++ b/ml/dlib/examples/member_function_pointer_ex.cpp @@ -0,0 +1,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. +} + +// ---------------------------------------------------------------------------------------- + + + |