由於第三方庫的佈局,我有類似下面的代碼:如何從私有基類調用靜態方法?
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:
基地:: SomeStaticMethod無法訪問因爲Derived1使用private來從Base繼承。
我知道,從Derived2
通過繼承我無法訪問,因爲私有符的Base
成員,但我仍然應該能夠調用Base
一個靜態方法 - 無論Base
和Derived2
之間的繼承關係。
如何解決歧義並告訴編譯器我只是在調用靜態方法?
這不起作用(同樣的錯誤C2247)。如果這是相關的,我正在使用MSVC 2013。 – Carlton
你確定嗎?它*應該*工作?你寫了領先的'::'嗎? – Bathsheba
積極。我複製/粘貼你的代碼並清理/重建我的項目。 – Carlton