只要用于访问成员指针的指针是正确类型,以下是否会导致未定义的行为?将指针派生类成员变量转换为指向基类成员变量的指针是否合法?
如果是这样,为什么我需要演员?如果没有它,它会看起来好多了(是的,我知道这只是一个意见问题)。
struct base {
int foo(int base::* ptr) {
return this->*ptr;
}
};
struct sub : base {
int blah{ 42 };
};
int main() {
return sub{}.foo(static_cast<int base::*>(&sub::blah));
}
我还没有试图解决问题。我最近开始使用一些广泛使用它的代码,并且这种模式根本不适合我。 – evan