1

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

用户输入 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 库可以帮助我实现这种行为?

4

3 回答 3

8

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

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

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

请注意,当您调用该操作时,它将在您提供给它的确切数组上工作(它是通过引用捕获的),因此请确保该对象仍然存在!

于 2012-08-21T08:19:08.737 回答
3

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

于 2012-08-21T08:21:16.173 回答
0

只需对您的 3 个函数进行编程,并根据用户对函数指针的输入分配其中一个函数。稍后您只需调用函数指针。

于 2012-08-21T08:16:57.327 回答