std::function example 2: member functions is a std::function example.
Operating system(s) or programming environment(s)
Lubuntu 15.04 (vivid)
Qt Creator 3.1.1
- G++ 4.9.2
Libraries used:
STL: GNU ISO C++ Library, version
4.9.2
Qt project file: ./CppStdFunctionExample2/CppStdFunctionExample2.pro
TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt SOURCES += main.cpp # # # Type of compile # # CONFIG(debug, debug|release) { message(Debug mode) } CONFIG(release, debug|release) { message(Release mode) #Remove all asserts and TRACE DEFINES += NDEBUG NTRACE_BILDERBIKKEL } # # # Platform specific # # # # # Compiler flags # # QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra unix { QMAKE_CXXFLAGS += -Werror }
#include <iostream> #include <functional> struct Speaker { Speaker(const std::string hello_message, const std::string bye_message) : m_hello_message(hello_message), m_bye_message(bye_message) { } void SayHello() const { std::cout << m_hello_message << '\n'; } void SayBye() const { std::cout << m_bye_message << '\n'; } const std::string m_hello_message; const std::string m_bye_message; }; int main() { const Speaker s1("Hello!","Bye!"); const Speaker s2("HELLO!","BYE!"); const std::function<void (const Speaker*)> say_hello_function = &Speaker::SayHello; const std::function<void (const Speaker*)> say_bye_function = &Speaker::SayBye; say_hello_function(&s1); say_bye_function(&s1); say_hello_function(&s2); say_bye_function(&s2); } /* Screen output: Hello! Bye! HELLO! BYE! Press <RETURN> to close this window... */

