小编Mat*_*Mat的帖子

面向对象的C++回调?

是否有一些库允许我在c ++中轻松方便地创建面向对象的回调?

例如,埃菲尔的语言具有"代理人"的概念,其或多或少的工作方式如下:

class Foo{
public:
    Bar* bar;

    Foo(){
        bar = new Bar();
        bar->publisher.extend(agent say(?,"Hi from Foo!", ?));
        bar->invokeCallback();
    }

    say(string strA, string strB, int number){
        print(strA + " " + strB + " " + number.out);
    }

}

class Bar{
public:
    ActionSequence<string, int> publisher;

    Bar(){}

    invokeCallback(){
        publisher.call("Hi from Bar!", 3);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出将是:嗨来自Bar!3来自Foo!

所以 - 代理允许将成员函数封装到一个对象中,沿着一些预定义的调用参数(来自Foo的Hi)给它,指定打开的参数(?),然后将它传递给其他对象,然后再调用它.

由于C++不允许创建非静态成员函数的函数指针,似乎并不容易实现容易在C++使用的东西.我在c ++中找到了一些关于面向对象回调的谷歌的文章,但是,实际上我正在寻找一些我可以导入的库或头文件,它允许我使用一些类似优雅的语法.

有人给我一些提示吗?

谢谢!

c++ oop eiffel member-function-pointers callback

8
推荐指数
3
解决办法
7855
查看次数

标签 统计

c++ ×1

callback ×1

eiffel ×1

member-function-pointers ×1

oop ×1