版权声明:copyright@xxdk2017 https://blog.csdn.net/u011583798/article/details/79242622
/*************************************************************************
> File Name: ptc.cpp
> Author: XXDK
> Email: [email protected]
> Created Time: Thu 01 Feb 2018 04:43:48 PM CST
************************************************************************/
#include<iostream>
using namespace std;
class Callback {
public:
Callback(){std::cout << "Callback constructor" << std::endl;}
void showCallback(void) {std::cout << "show target" << endl;}
void rogerCallback(void) {std::cout << "roger order" << endl;}
void detectCallback(void) {std::cout << "detect target" << endl;}
void launchCallback(void) {std::cout << "weapon launch" << endl;}
};
class Eventsets{
public:
Eventsets() {std::cout << "Eventsets constructor" << std::endl;}
void (*show)(void) = NULL;
void (*roger)(void) = NULL;
void (*detect)(void) = NULL;
void (*launch)(void) = NULL;
};
int main()
{
Callback cb;
Eventsets es;
/**< c */
void (*show) (void) = NULL;
void (*roger) (void) = NULL;
void (*detect) (void) = NULL;
void (*lanuch) (void) = NULL;
show = reinterpret_cast<void (*)()>(&cb.showCallback); ///< test ok
roger = reinterpret_cast<void (*)()>(&cb.rogerCallback); ///< test ok
detect = reinterpret_cast<void (*)()>(&cb.detectCallback); ///< test ok
lanuch = reinterpret_cast<void (*)()>(&cb.launchCallback); ///< test ok
show();
roger();
detect();
lanuch();
/**< c++ */
es.show = reinterpret_cast<void (*)()>(&cb.showCallback);
es.roger = reinterpret_cast<void (*)()>(&cb.rogerCallback);
es.detect = reinterpret_cast<void (*)()>(&cb.detectCallback);
es.launch = reinterpret_cast<void (*)()>(&cb.launchCallback);
es.show();
es.roger();
es.detect();
es.launch();
}