gpt4 book ai didi

C++ 0x11 - std::bind 和组合

转载 作者:行者123 更新时间:2023-11-30 02:35:36 25 4
gpt4 key购买 nike

我想在使用组合时将成员类事件绑定(bind)到消费者类函数。如果问题描述有误请指正,我是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;
}

我想在 Observable 调用 OnStateChanged 函数时运行 Observer::OnStateChanged。

最佳答案

它说 &Observable::OnStateChanged 是你试图绑定(bind)的函数……你是说 &Observer::OnStateChanged 吗?因为这工作正常:

client.OnStateChanged = std::bind(&Observer::OnStateChanged, this);

关于C++ 0x11 - std::bind 和组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com