首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ 0x11 - std::bind和组合

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

Stack Overflow用户
提问于 2015-11-01 09:14:43
回答 1查看 270关注 0票数 1

在使用组合时,我希望将成员类事件绑定到使用者类函数。如果问题的描述是错误的,请纠正我,我来自C#背景。

以下是代码:

代码语言:javascript
复制
#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函数时。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-01 09:31:30

上面写着&Observable::OnStateChanged用于你试图绑定的函数.你是说&Observer::OnStateChanged吗?因为这样做没问题:

代码语言:javascript
复制
client.OnStateChanged = std::bind(&Observer::OnStateChanged, this);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33460700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档