[英]Access protected member function in C++
我无法更改两个外部 class(A 和 B)。 我想访问 class A::doSomething 的受保护成员 C(我可以编辑)。 有什么方法可以访问它。 我知道这不是好的做法,但我没有找到任何其他方法。
// External code starts
struct A {
friend class B;
protected:
void doSomething() {
std::cout << "A" << std::endl;
}
};
struct B {
protected:
void doSomething() {
A a;
a.doSomething();
}
};
// External code ends
// This will not compile as doSomething is a protected member.
struct C : B {
protected:
void doSomethingElse() {
A a;
a.doSomething();
}
};
友谊是不可传递的,因此从B
继承无助于此。
从A
继承并形成指向成员的指针doSomething
:
struct Helper : A
{
static constexpr auto ptr = &Helper::doSomething;
};
使用该指针在a
上调用 function:
void doSomethingElse()
{
A a;
(a.*Helper::ptr)();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.