0

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

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

但现在,编译器说

initializing' : 不能从 'overloaded-function' 转换为 'bool (__thiscall boost::any::* )(const bool &)' 范围内没有这个名称的函数与目标类型匹配

我也试着这样做:

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

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

有人可以帮助我吗?

PS 我在上面的代码中创建了 boost::any 实例

4

1 回答 1

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;
}
于 2013-09-20T09:41:19.370 回答