小编Ber*_*USA的帖子

如何调用存储在地图中的仿函数?

我有一个基类和一个类,应该是仿函数,像这样:

class BFunctor {};

class Add : public BFunctor {
public:
    int operator()(int x, int y) {
        return x + y;
    }
};
Run Code Online (Sandbox Code Playgroud)

我打算创建几个这些子类,并在名为ops的映射中存储指向它们的指针,如下所示:

map<string, BFunctor*> ops {};
Add add;
ops["sum"] = &add;
Run Code Online (Sandbox Code Playgroud)

但是,在这之后,为什么我不能像这样使用函数对象:

int x = ops["sum"](3, 5);
Run Code Online (Sandbox Code Playgroud)

我的linter说"明显调用的括号前面的表达式必须有(指向 - ) - 函数类型"

并且编译器说"错误:表达式不能用作函数".

c++

2
推荐指数
2
解决办法
79
查看次数

标签 统计

c++ ×1