稍后调用一个函数

时间:2012-08-21 08:12:27

标签: c++

我正在解析用户输入并作为示例执行以下操作:

用户输入1:

Array<int> a;
Populate()(a);
int v = 10;
a.append(v);

用户输入2:

Array<bool> a;
Populate()(a);
int v = true;
a.remove(v);

用户输入3:

Array<bool> a;
Populate()(a);
a.removeAll();

现在假设我希望稍后执行这些函数,以便解析创建Array对象,建立执行此Array的命令(removeAll等)以及参数,但实际上并不是调用该命令 - 此调用将在稍后阶段发生。

是否有std或boost库可以帮助我实现这样的行为?

3 个答案:

答案 0 :(得分:7)

在C ++ 11中,您可以记住std::function中的操作:

std::function<void()> action;
Array<int> a;

Populate()(a);
int v = 10;
action = [&a,v] () { a.append(v); };

注意,当你调用动作时,它会对你给它的确切数组起作用(它是通过引用捕获的),所以确保对象仍然存在!

答案 1 :(得分:3)

在C ++ 11中,您可以使用std::functionstd::bind来存储稍后可以调用的函数对象。在C ++ 03中,您可以使用boost::functionboost::bind

答案 2 :(得分:0)

只需编写3个函数并根据用户对函数指针的输入分配其中一个函数。稍后你只需调用函数指针。

相关问题