I want to bind member class event to consumer class function while using composition. Please correct me if description of problem is wrong, I come from C# background.
Here is the code:
#include "stdafx.h"
#include <functional>
#include <iostream>
using namespace std::placeholders;
class Observable
{
public:
    void Register(std::function<void()> Callback)
    {
    }
    std::function<void()> OnStateChanged;
    void ChangeState()
    {
        std::cout << "DevicioClient::ChangeState" << std::endl;
        OnStateChanged();
    }
};
class Observer
{
    Observable client;
    void OnStateChanged()
    {
        std::cout << "DevicioConsumer::OnStateChanged" << std::endl;
    }
public:
    void Run()
    {
    // does work
        client.OnStateChanged = []{
            std::cout << "client.OnStateChanged" << std::endl;
        };
    // doesn't work
    //  OnStateChanged = std::bind(&Observable::OnStateChanged, this);
        client.ChangeState();
    }
};
int _tmain(int argc, _TCHAR* argv[])
{
    Observer consumer;
    consumer.Run();
    getchar();
    return 0;
}
I want to run Observer::OnStateChanged when Observable call OnStateChanged function.
 
     
    