Из-за расположения сторонней библиотеки у меня есть что-то вроде следующего кода:
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;
}
Я получаю ошибку компилятора C2247 с MSVC:
Base:: SomeStaticMethod недоступен, поскольку Derived1 использует private для наследования с Base.
Я знаю, что я не могу получить доступ к Base
членам из Derived2
через наследование из-за частного спецификатора, но я все равно должен был бы вызвать статический метод Base
- независимо от каких-либо отношений наследования между Base
и Derived2
.
Как разрешить двусмысленность и рассказать компилятору, я просто делаю вызов статического метода?