我有一個基類例如教(從A派生的類可以通過A指針訪問並使用methodA的任何一個)。的Xcode爲什麼的警告「隱藏」與重載虛函數
1
A
回答
6
我想從A
(假設它是B
)派生的類之一隻覆蓋methodA()
的重載之一。在這種情況下,methodA
的其他超載是隱藏在B
。例如:
class A {
public:
virtual void methodA(int) {}
virtual void methodA(int, int, int) {}
};
class B : public A {
public:
virtual void methodA(int) {}
};
int main()
{
A a;
B b;
A *pa = &b;
a.methodA(7); //OK
a.methodA(7, 7, 7); //OK
pa->methodA(7); //OK, calls B's implementation
pa->methodA(7, 7, 7); //OK, calls A's implementation
b.methodA(7); //OK
b.methodA(7, 7, 7); //compile error - B's methodA only accepts one int, not three.
}
的解決方案是一個using
聲明添加到B
:
class B : public A {
public:
using A::methodA; //bring all overloads of methodA into B's scope
virtual void methodA(int) {}
};
+0
打在頭上 - 非常感謝,這一直困擾着我很多年。 – user2148583 2013-03-08 14:33:15
+0
@ user2148583如果這解決了您的問題,請考慮[接受](http://meta.stackexchange.com/a/5235)這個答案。 – 2013-12-31 12:05:03
相關問題
- 1. Double dispatch產生「隱藏虛擬功能」警告,爲什麼?
- 2. 爲什麼派生類重載函數隱藏基類函數?
- 3. 故意隱藏重載函數警告避免
- 4. 爲什麼函數重載隱藏函數重載在基類中
- 5. 「隱藏」警告。這是什麼意思?
- 6. xcode:如何隱藏此警告?
- 7. 如何在Xcode 7中隱藏警告
- 8. 爲什麼我會得到「隱式聲明函數'PerformXMLXPathQuery'」警告?
- 9. 隱藏Google Library的警告
- 10. 由gWidgets隱藏的警告
- 11. Xcode - 爲什麼沒有顯示警告?
- 12. xcode爲什麼給我這個警告?
- 13. 警告的原因是什麼:函數'swprintf_s'的隱式聲明?
- 14. Xcode在重新編譯後隱藏警告
- 15. 爲什麼虛擬功能會隱藏?
- 16. 爲什麼jom在QtCreator中隱藏gcc警告?
- 17. 爲什麼gcc隱藏全局名稱空間中的重載函數?
- 18. C++隱藏虛函數
- 19. 爲什麼在派生隱藏基函數時使用虛函數?
- 20. 如何從R中的自寫函數隱藏警告消息?
- 21. 爲什麼構造函數會忽略重寫的虛函數?
- 22. 隱藏'Unidentified Index'警告
- 23. 什麼原因導致「W1010方法'%s'隱藏基類型'%s'的虛警方法」警告?
- 24. 警告:函數的隱式聲明'crypt_r'
- 25. 警告:函數的隱式聲明TableCreate
- 26. 隱式聲明警告:什麼是內置函數?
- 27. 的XCode警告:
- 28. Xcode - 警告:隱式函數聲明在C99中無效
- 29. 這個Xcode警告是什麼意思? 「
- 30. 什麼意思是iOS Xcode plist警告?
警告是不是在Xcode,從你的編譯器。 – 2013-03-08 13:44:58
@AnoopVaidya:是的,編譯器是鏗鏘++(除非這是Xcode的舊版本),並大量集成到Xcode環境中......如果Xcode實際上在生成該警告之前甚至單擊'compile' :) – 2013-03-08 13:57:31