我想获得指向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的实例
答案 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;
}