gpt4 book ai didi

存储在 vector 中的 C++ std::function 不起作用

转载 作者:行者123 更新时间:2023-11-30 01:45:17 61 4
gpt4 key购买 nike

以下代码有效:

float value = 3.0f;
auto f = std::bind(&MyClass::doSomething, this, value);
f();

但是,一旦我尝试将函数存储在 std::vector 中,它就不允许我调用该函数:

float value = 3.0f;
auto f = std::bind(&MyClass::doSomething, this, value);

std::vector<std::function<void(float)> > list;
list.push_back(f);
list.back()();

这是编译器错误:

No matching function for call to object of type 'value_type' (aka 'std::__1::function<void (float)>').  Candidate function not viable: requires 1 argument, but 0 were provided.

我好久没有遇到这种情况了。如果我尝试将 lambda 绑定(bind)到浮点值而不是使用成员函数,也会出现同样的问题。

最佳答案

因为你说 std::function 对象接受一个参数,但是你在调用函数对象时没有提供参数。事实上,std::bind 返回的可调用对象接受任何参数,因此std::function 对象也不应该:

std::vector<std::function<void()> > list;

关于存储在 vector 中的 C++ std::function 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34837380/

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