C ++如何为成员变量重载运算符

时间:2016-04-23 21:08:29

标签: c++ operator-overloading std-function

如果我有结构:

typedef struct Foo
{
    std::function<bool()> func;
}Foo;

我有一个无效功能

void bar(){std::cout << "hey";}

我希望能够做到这一点:

Foo f;
f.func = bar // f.func == func(){std::cout << "hey"; return true;}

1 个答案:

答案 0 :(得分:1)

第一件事是void bar() {}的函数类型是void()而不是bool(),所以func应该是:

std::function<void()> func;

第二件事:目前还不清楚&#34; C ++如何为成员变量重载运算符&#34;手段。如果您想编译代码,那么上述更改就足够了。如果要调用void operator()() { func(); },则可以重载的运算符为f();

如果你想保留bool()函数类型并且仍然可以调用void()函数,那么你可以使用lambda,它将调用bar并返回true:

f.func = [](){ bar(); return true;};