在解引用的类中解引用指向函子的指针

Manex

我有这样的函子

struct foo
{
    int a;
    foo(a) : a(a) {}
    int operator()(int b) { return a+b; }
};

这样的课

class bar
{        
    public:
    foo* my_ftor;
    bar(foo* my_ftor) : my_ftor(my_ftor) {}
    ~bar() {}
};

然后,假设有一个指向此类的指针,其中包含一个指向foo的指针。

foo MyFoo(20);
bar MyBar(&MyFoo);

在一个函数中,我传递了一个对bar的引用,并且我想运行仿函数。我以以下方式工作:

void AnyFunction(bar* RefToBar)
{
    int y;
    y = RefToBar->my_ftor->operator()(25);
}

还有其他“更清洁”的方法可以取消引用函子吗?类似于

y = RefToBar->my_ftor(25);

不能工作,可悲的是...

任何想法?谢谢

安东尼

使用真实参考:

class bar {
public:
  foo &my_ftor;

  bar (foo &f) : my_ftor(f) {}
};


void AnyFunction (bar &reftobar) {
    int y = reftobar.my_ftor(25);
}

像这样打电话

foo myFoo(20);
bar myBar (myFoo);

AnyFunction (myBar);

为了完整性,这是另一个答案,它更像是一种现代方法。

class foo {
public:
    foo (int i) : a(i) {}

    int operator() (int x) const {
        return x + a;
    }
private:
    int a;
};

template <typename F>
void AnyFunction (const F &func) {
    int y = func(25);
}

因此,您可以foo直接传递

AnyFunction (foo (20));

或另一种功能对象,例如lambda:

AnyFunction([](int x) -> int {
    return x + 20;
});

您还可以扩展bar以包括以下功能:

int run_foo (int x) const {
    return my_ftor (x);
}

并将其绑定(#include <functional>):

AnyFunction (std::bind (&bar::run_foo, &myBar, std::placeholders::_1));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指针解引用在Go中如何工作?

来自分类Dev

指针地址/解引用运算符

来自分类Dev

在C中解引用指向0的指针

来自分类Dev

测试NULL指针并比较解引用的值

来自分类Dev

指针解引用线程安全吗?

来自分类Dev

解引用空指针

来自分类Dev

解引用指向结构体中DB的指针

来自分类Dev

C / C ++指针解引用

来自分类Dev

通过指向数组的指针解引用数组值

来自分类Dev

通过asm DLL中的ref指针解引用C#

来自分类Dev

解引用指向不完整类型openSSL的指针

来自分类Dev

C ++中的安全指针解引用

来自分类Dev

在golang文本/模板中解引用指针

来自分类Dev

C语言:隐式指针解引用

来自分类Dev

当参数是指向数组的解引用指针时,为什么sizeof()无法按预期工作?

来自分类Dev

解引用int指针与char指针

来自分类Dev

解引用2D数组的指针

来自分类Dev

在C中解引用指向0的指针

来自分类Dev

在c中解引用指针时的不同值

来自分类Dev

C ++指针解引用分配

来自分类Dev

在C中解引用指向不完整类型队列的指针

来自分类Dev

指针解引用

来自分类Dev

类中的引用指针

来自分类Dev

C:解引用指向不完整类型单链表的指针

来自分类Dev

使用“ this”解引用指针

来自分类Dev

解引用指向char指针的指针C ++

来自分类Dev

解引用指向const数据类型的指针

来自分类Dev

从解引用的指针返回原始指针

来自分类Dev

如何将指向对象的指针转换为常量解引用对象?