获取指向boost :: any :: operator =的指针

时间:2013-09-20 08:40:25

标签: c++ boost member-function-pointers

我想获得指向boost :: any :: operator =的指针,所以我这样做了:

bool(__thiscall boost::any::*func)(const bool&) = &(boost::any::operator=<bool>);

但现在,编译器说

初始化':无法从'overloaded-function'转换为'bool(__thiscall boost :: any :: *)(const bool&amp;)'         范围内具有此名称的函数都不匹配目标类型

我也试着这样做:

bool(__thiscall boost::any::*func)(const bool&) = static_cast<(boost::any::*)(const bool&)>(&(boost::any::operator=<bool>));

但有编译器说:“语法错误:'('”在这一行

有人可以帮助我吗?

P.S。我在上面的代码中创建了boost :: any的实例

1 个答案:

答案 0 :(得分:1)

您无法在成员函数指针的赋值中指定参数。 这样就可以了:

#include <iostream>
#include <boost/any.hpp>
int main() {
    boost::any any = false;
    std::cout << boost::any_cast<bool>(any) << std::endl;
    typedef boost::any& (boost::any::*assign_operator)(const bool&);
    assign_operator assign = &boost::any::operator =;
    (any.*assign)(true);
    std::cout << boost::any_cast<bool>(any) << std::endl;
    return 0;
}