在使用组合时,我希望将成员类事件绑定到使用者类函数。如果问题的描述是错误的,请纠正我,我来自C#背景。
以下是代码:
#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;
}我想运行观察者::OnStateChanged,当可观察到调用OnStateChanged函数时。
发布于 2015-11-01 09:31:30
上面写着&Observable::OnStateChanged用于你试图绑定的函数.你是说&Observer::OnStateChanged吗?因为这样做没问题:
client.OnStateChanged = std::bind(&Observer::OnStateChanged, this);https://stackoverflow.com/questions/33460700
复制相似问题