gpt4 book ai didi

c++ - 将一个对象、它的调用方法和调用它的参数打包到一个对象中,以便以后调用它

转载 作者:行者123 更新时间:2023-11-30 00:35:44 26 4
gpt4 key购买 nike

是否有可能使用 C++ 11 或 Boost 创建一个存储对象指针(实例)、方法指针和一些参数的对象,并可以稍后使用这些参数调用此方法?我的意思是 - 如何仅使用 std 或 Boost 模板来做到这一点?我很确定这是可能的,但不知道什么是最好的方法。

真正的问题是:是否有可能以任何方式在同一个容器中存储多个引用不同方法(具有不同签名)的此类对象?

最佳答案

这是 std::bindstd::function 的经典用例:

#include <functional>
#include <vector>

using namespace std::placeholders; // for _1, _2, ...

std::vector<std::function<int(double, char)>> v;

Foo x;
Bar y;

v.emplace_back(std::bind(&Foo::f, &x, _1, _2)); // int Foo::f(double, char)
v.emplace_back(std::bind(&Bar::g, &y, _2, true, _1)); // int Bar::g(char, bool, double)
v.emplace_bacK(some_free_function); // int some_free_function(double, char)

使用:

for (auto & f : v) { sum += f(1.5, 'a'); }

关于c++ - 将一个对象、它的调用方法和调用它的参数打包到一个对象中,以便以后调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18241834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com