我正在解析用户输入并作为示例执行以下操作:
用户输入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库可以帮助我实现这样的行为?
答案 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::function和std::bind来存储稍后可以调用的函数对象。在C ++ 03中,您可以使用boost::function和boost::bind。
答案 2 :(得分:0)
只需编写3个函数并根据用户对函数指针的输入分配其中一个函数。稍后你只需调用函数指针。