由于第三方库的布局,我有如下代码:
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;
}
我在使用 MSVC 时收到编译器错误 C2247:
Base::SomeStaticMethod 不可访问,因为 Derived1 使用 private 从 Base 继承。
我知道由于 private 说明符,我无法通过继承访问Base
成员Derived2
,但我仍然应该能够调用 - 的静态方法,而不管andBase
之间的任何继承关系。
如何解决歧义并告诉编译器我只是在调用静态方法?Base
Derived2