【发布时间】:2017-01-13 23:16:38
【问题描述】:
由于第三方库的布局,我有如下代码:
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 说明符,我无法通过继承从 Derived2 访问 Base 成员,但我仍然应该能够调用 Base 的静态方法 - 无论 @987654325 之间的任何继承关系如何@ 和 Derived2.
如何解决歧义并告诉编译器我只是在调用静态方法?
【问题讨论】:
标签: c++ static-methods private-inheritance