template<class T>
class base
{
class nestedClass
{
T pos;
};
class derivedClass:public base<T>::nestedClass
{
void fun(){
pos = pos +5; // error: pos is not declared in this scope
}
};
};
Q
嵌套類繼承
-1
A
回答
3
C++ 03 [14.6節/ 8]表示
當尋找一個名稱的模板中的定義中使用的聲明,通常的查找規則(3.4.1,3.4.2)被用於爲非獨立的名字。將依賴於模板參數的名稱查找推遲到實際模板參數已知(14.6.2)。
第14.6.2/3說
在一類模板或模板類中的成員的定義,如果一個基類類模板的依賴於模板的參數,所述在類模板或成員的定義點或在類模板或成員的實例化過程中,不檢查基類的範圍。
pos
是一個非依賴名稱,因此基類不被檢查。
所以你有兩個選擇。
- 採用全會員即
base<T>::nestedClass::pos
- 使用
this->pos
合格的名稱。
1
它已被明確爲基礎參考:: nestedClass :: POS [或使用using語句]
1
你不把POS進入活動範圍。您可以使用this->pos += 5;
或using nestedclass::pos
。
相關問題
- 1. C#嵌套類和繼承
- 2. 的Python:嵌套類繼承
- 3. 嵌套類和繼承
- 4. JS嵌套繼承
- 5. 如何嵌套類和繼承類
- 6. 繼承的嵌套類到子類
- 7. 繼承的類是否繼承嵌套的類?
- 8. 從受保護的嵌套類繼承的公共嵌套類?
- 9. 爲什麼嵌套類「繼承」?
- 10. 不直觀的嵌套類繼承
- 11. C#繼承自嵌套類本身
- 12. C++錯誤C4091當繼承嵌套類
- 13. python與相鄰繼承的嵌套類?
- 14. 嵌套主頁和繼承
- 15. C++中的嵌套繼承
- 16. 嵌套單表繼承
- 17. 嵌套類如何從容器類繼承?
- 18. 從基類繼承時,嵌套類會發生什麼?
- 19. 類繼承或嵌套類,哪個更好?
- 20. 使用嵌套對象處理父類和子類的繼承
- 21. 嵌套的C++類是否可以繼承它的封閉類?
- 22. 的JavaScript的Object.create - 繼承嵌套屬性
- 23. 與繼承的資源嵌套對象
- 24. 嵌套和繼承異步/任務
- 25. ui.router嵌套視圖繼承父窗體
- 26. 嵌套聚合物模板的繼承
- 27. WPF:VerticalAlignment是否由嵌套容器繼承?
- 28. Rails應用繼承和嵌套資源
- 29. CSS嵌套:從誰那裏繼承?
- 30. Javascript嵌套函數屬性繼承
這充滿了語法錯誤。 – sth 2011-02-02 04:23:27
對不起,我只是從我的代碼簡化。 – Sean 2011-02-02 04:25:27
請複製並粘貼您的*真實*代碼。你顯然已經省略了很多代碼,並且在確定究竟出了什麼問題時,你所遺漏的一些代碼可能很重要。創建一個編譯的小例子(或者你認爲*應該*編譯)並且仍然演示這個問題。 – 2011-02-02 04:25:54