【发布时间】:2016-09-05 04:23:55
【问题描述】:
使用reinterpret_cast 将指向成员函数的指针转换为同一类的另一个指向成员函数的指针是否合法?以下示例有效。但这合法吗?
#include<iostream>
#include<vector>
#include<string>
class A
{
public:
void func_int(int x) { std::cout << x << std::endl; }
void func_string(std::string const& x) { std::cout << x << std::endl; }
};
int main()
{
std::vector<void(A::*)()> v;
v.push_back(reinterpret_cast<void(A::*)()>(&A::func_int));
v.push_back(reinterpret_cast<void(A::*)()>(&A::func_string));
A a;
(a.*reinterpret_cast<void(A::*)(int)>(v[0]))(5);
(a.*reinterpret_cast<void(A::*)(std::string const&)>(v[1]))(std::string{"Test"});
return 0;
}
【问题讨论】:
标签: c++ member-function-pointers reinterpret-cast