| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include <iostream>
- #include <functional>
- using std::cout;
- using std::endl;
- /**********************************************************************************************
- *
- */
- class MyClass
- {
- public:
- MyClass() {
- private_x = 5;
- };
-
- int public_x = 12;
- private:
- int private_x;
- };
- /**********************************************************************************************
- *
- */
- class YourClass
- {
- public:
- YourClass()
- {
- private_y = 8;
- }
- private:
- int private_y;
- };
- /**********************************************************************************************
- *
- */
- void g(MyClass * a1, YourClass* a2) {
- printf("access both classes\n");
- printf("MyClass: %d\n", a1->public_x);
- printf("YourClass: private\n");
- }
- /**********************************************************************************************
- *
- */
- class EventHandler
- {
- public:
- std::function<void(MyClass*, YourClass*)> cb = nullptr;
- template<class T1, class T2>
- void addHandler(std::function<void(T1*, T2*)> callback)
- {
- cout << "Handler added..." << endl;
- cb = callback;
- }
- template<class T1, class T2>
- void call_cb(T1* myCl, T2* yourCl) {
- if(cb != nullptr)
- (cb)(myCl, yourCl);
- }
- };
- /**********************************************************************************************
- *
- */
- int main(int argc, char** argv)
- {
- MyClass* myClass = new MyClass();
- YourClass* yourClass = new YourClass();
- EventHandler* handler = new EventHandler();
- /*
- * Here is the compiler error
- */
- handler->addHandler(g);
- handler->call_cb(myClass, yourClass);
- }
|