Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 绑定重载函数_C++_Boost - Fatal编程技术网

C++ 绑定重载函数

C++ 绑定重载函数,c++,boost,C++,Boost,这段代码最初是用boost 1.48开发的。由于升级到boost 1.52,它拒绝编译 boost::signals2::signal<void (uint32_t)> foo; boost::shared_ptr<boost::circular_buffer<uint32_t>> _foo_buffer = new boost::circular_buffer<uint32_t>(32); _foo.connect(boost::bind(&am

这段代码最初是用boost 1.48开发的。由于升级到boost 1.52,它拒绝编译

boost::signals2::signal<void (uint32_t)> foo;
boost::shared_ptr<boost::circular_buffer<uint32_t>> _foo_buffer = new boost::circular_buffer<uint32_t>(32);
_foo.connect(boost::bind(&boost::circular_buffer<uint32_t>::push_front, _foo_buffer, _1));
三个定义

void push_front(param_value_type);
void push_front(rvalue_type);
void push_front();
这让我的编译器很困惑


我非常感谢您对新的boost库中的connect表达式的语法提供一些帮助。谢谢

假设您有两个功能

void foo( int ) {}
void foo( double* ) {}
那么你就不能只写
&foo
,因为那样会模棱两可

但是您可以使用
static\u cast
建立一个只有一个候选对象的上下文,因此:

static_cast<void(*)(int)>( &foo )
static_cast(&foo)
这会给你第一个的地址,第二个也一样



这是说,你可以用C++ lambda函数来代替事情,而不是<代码> BIN < /C>(对于C++ 03编译器,可以替代地定义自己的函数)。code>static\u cast(&boost::circular\u buffer::push\u front)刚刚产生了与原始版本类似的错误。我现在不在电脑旁,所以无法引用它们。然而,C++ LAMBDAS对我来说是完美的,所以它不再是个问题了。谢谢

static_cast<void(*)(int)>( &foo )