[英]Getting pointer to boost::any::operator=
我想获得指向boost :: any :: operator =的指针,所以我这样做了:
bool(__thiscall boost::any::*func)(const bool&) = &(boost::any::operator=<bool>);
但是现在,编译器说
初始化”:无法从“重载函数”转换为“布尔型(__thiscall boost :: any :: *)(const bool&)”在范围内具有此名称的函数均不匹配目标类型
我也尝试过这样:
bool(__thiscall boost::any::*func)(const bool&) = static_cast<(boost::any::*)(const bool&)>(&(boost::any::operator=<bool>));
但是有编译器说:“语法错误:'('”在这一行
有人可以帮我吗?
附注:我在上面的代码中添加了boost :: any
您不能在成员函数指针的分配中指定参数。 可以做到这一点:
#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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.