#include <iostream>
using namespace std;

class B {
public:
    void up() {
        std::cout << "up" << std::endl;
    }
    void down() {
        std::cout << "down" << std::endl;
    }
    void init( void(B::*someFunc)() , void(B::*otherFunc)() ) {
        m_execute = someFunc;
        B* newB = new B();
        m_b = newB;
        m_b->m_execute = otherFunc;
    }
    void find() {
        run_my_execute();
        m_b->run_my_execute();
    }
private:
    void(B::*m_execute)();
    B* m_b;
    void run_my_execute() {
        (this->*m_execute)();
    }
};

int main(){
    B* b = new B();
    b->init(&B::up, &B::down);
    b->find();
    return 0;
}

