gpt4 book ai didi

c++ - 通过 std::function 引用仿函数

转载 作者:IT老高 更新时间:2023-10-28 21:52:08 26 4
gpt4 key购买 nike

基本上,我希望有以下语义:

#include <functional>
#include <iostream>

class test
{
public:
void add(std::function<void()> f)
{
f();
}

void operator()()
{
++x;
}

int x = 33;
};

int main()
{
test t;
t.add(t);
// wanted: x == 34 instead: x == 33 since add(t) copies it
}

我了解 std::function 包装了可调用对象的拷贝,但有没有办法使用 std::function 获取对可调用对象的引用?

最佳答案

您想使用 std::ref模板函数创建reference wrapper对于您的实例:

std::reference_wrapper is a class template that wraps a reference in a copyable, assignable object.

Function templates ref and cref are helper functions that generate an object of type std::reference_wrapper, using template argument deduction to determine the template argument of the result.

你会这样使用它:

t.add(std::ref(t));

关于c++ - 通过 std::function 引用仿函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336790/

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