繁体   English   中英

在C++访问受保护成员function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM