相关疑难解决方法(0)

如何从私有基类调用静态方法?

由于第三方库的布局,我有类似下面的代码:

struct Base
{
    static void SomeStaticMethod(){}
};

struct Derived1: private Base {};

struct Derived2: public Derived1 {
    void SomeInstanceMethod(){
        Base::SomeStaticMethod();
    }
};

int main() {
    Derived2 d2;
    d2.SomeInstanceMethod();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用MSVC获得编译器错误C2247:

Base :: SomeStaticMethod无法访问,因为Derived1使用private从Base继承.

我知道我不能访问Base从成员Derived2通过继承,因为私人符,但我仍然应该能够调用静态方法Base-无论之间的继承关系BaseDerived2.
如何解决歧义并告诉编译器我只是调用静态方法?

c++ static-methods private-inheritance

25
推荐指数
4
解决办法
2089
查看次数

标签 统计

c++ ×1

private-inheritance ×1

static-methods ×1