gpt4 book ai didi

c++ - 将赋值运算符绑定(bind)到 boost::function 对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:44 28 4
gpt4 key购买 nike

我有一个 Visual Studio 2008 C++03 项目,我想在其中使用 boost::function 对象来设置指针的值。像这样:

boost::function< void( int* ) > SetValue;
boost::function< int*() > GetValue;

int* my_value_;
SetValue = boost::bind( my_value_, _1 ); // how should this look?
GetValue = boost::bind( my_value_ ); // and this?

int v;
SetValue( &v );
assert( my_value_ == &v );

int* t = GetValue();
assert( t == my_value_ );

有没有办法做到这一点,或者我需要一个像这样的中间函数:

void DoSetValue( int* s, int* v ) { s = v; };
SetValue = boost::bind( DoSetValue, my_value_, _1 );

谢谢

最佳答案

使用 Boost.Lambda 库:

#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>

int main()
{
boost::function<void(int*)> SetValue = (boost::lambda::var(my_value) = boost::lambda::_1);
boost::function<int*()> GetValue = boost::lambda::var(my_value);
}

您可以找到有关使用变量的更多信息 in its documentation .

关于c++ - 将赋值运算符绑定(bind)到 boost::function 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725939/

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