是否强制转换const
C++ 中定义的成员函数指针?以下是有效代码吗?
struct T {
void foo(int i) const { std::cout << i << std::endl;};
};
void (T::*f1)(int) const = &T::foo;
void (T::*f2)(int) = reinterpret_cast<void (T::*)(int)>(f1);
T t;
(t.*f2)(1);
更新:
我需要这个的原因是我正在编写一个函数,它接受一个对象和一个指向该对象的成员函数指针。我需要一个用于 const 对象的版本(只接受 const 函数)和一个普通的版本。由于我不想要重复的代码,我的想法是将实际代码放在非常量版本中并从 const 版本中调用它,丢弃任何 const。