#include <iostream>
#include <memory>
#include <functional>

class Object {
    std::function<void(int)> m_fTodo;
public:
    template < typename Unary >
    Object( Unary const & unary ) 
    : m_fTodo( unary )
    {}
    
    void TodoinClass() {
        m_fTodo( 10 );
    }
};

class Scene
{
    std::shared_ptr<Object> m_pObj;   
public:    
    Scene() 
    : m_pObj( new Object(std::bind(&Scene::Todo, this, std::placeholders::_1)) )
    { 
        m_pObj->TodoinClass();
    }

    void Todo(int A) {
        std::cout << "this: " << this << std::endl;;
        std::cout << "void Todo(" << A << ")" << std::endl;
    }
};

int main() {

    Scene scene;
    
}